octave - 计算从第二个向量化实现开始的所有元素的每个元素的平均值,即行向量中的前一个和下一个元素
问题描述
对于从第二个元素开始的所有元素,我想计算每个元素的平均值,即行向量中的前一个和下一个元素,并且我想用一个向量化的实现来做到这一点。
假设我有这个行向量:
a = [4, 7, 1, 3, 2];
我想要得到的是:
b = [4, 3.66, 2, 1.66];
这又是后续三元组的平均值:
[4 7 1]、[7 1 3]、[1 3 2]、[3 2 0](零是常规的)。
顺便说一句,这里与两个数字的近似值无关紧要,这只是为了示例。
我想出了这段代码:
a = [4 7 1 3 2];
function shifted = generateShiftedValues(rowVec)
shifted = rowVec;
for i=2:3
shifted(i, :) = [rowVec(1, i:end), zeros(1, i-1)];
endfor
endfunction
b = mean(generateShiftedValues(a)(:, 1:end-1), 1)
但我想要的是一个完全矢量化的实现。
那可能吗?有任何想法吗?非常感谢你。
解决方案
我会这样做:
a = [4 7 1 3 2]
n = 3;
b = conv(a, ones(n, 1)) / n;
b = b(3:end-1)
a =
4 7 1 3 2
b =
4.00000 3.66667 2.00000 1.66667
人们可以轻松地为要平均的任意数量的元素和任意“起点”构建通用解决方案。如果您需要这样,也许在您的问题中提供一般描述。如果那个“特殊情况”就足够了,那就够了。
希望有帮助!
推荐阅读
- postgresql - 使用 PostgreSQL 查找平均停留时间
- android - Android Google Drive REST Api:重复文件
- python - 从两个不同的 Django 应用程序迁移两个不同的模型
- jenkins - Github PR 检查不禁止推送
- c - unsigned long vs uint64_t(性能影响)
- php - 供应商产品视频
- tableau-api - 将 Snowflake 存储过程连接到 Tableau
- reactjs - 在 React 中处理 PUT 请求?
- python - 通过合并空白主字典中的字典,在 Python 中创建具有特定结构的 JSON
- ios - 当wifi和蜂窝关闭时,iOS应用程序如何在杀死后推送本地通知?