Matlab中如何对数组每8个元素取均值实现8倍降采样?
Matlab 实现数组每8个连续元素求平均值的方法
实现思路
- 先把一维原数组重构成8行N列的矩阵,其中N等于原数组长度除以8,要求原数组长度必须是8的整数倍
- 对矩阵每一列求平均值,得到的结果就是目标数组
代码实现
通用写法(兼容行向量、列向量输入)
% 示例输入数组 array = [2 4 6 7 1 5 8 3 9 5 5 8 7 7 2 3 4 3 5 8 6 9 0 1]; % 重构成8行的矩阵,第二参数写[]会自动计算匹配的列数 reshaped_arr = reshape(array, 8, []); % 对矩阵每一列求平均值,输出为行向量和示例格式对齐 arrayfinal = mean(reshaped_arr, 1);
运行结果
执行上述代码后得到的arrayfinal输出为:
[4.5 5.75 4.5]
和预期结果完全匹配。
注意事项
- 该实现要求原数组长度必须是8的整数倍,否则
reshape方法会抛出参数不匹配的错误 - 如果原数组为列向量,最终结果需要转置为列向量的话,修改最后一行代码为
arrayfinal = mean(reshaped_arr, 1).';即可
内容的提问来源于stack exchange,提问作者Johannes Stache
相关产品推荐
相关产品推荐

