matlab - 如何对矩阵中每一行的每 n 列进行平均?

标签 matlab matrix mean

所以我有一个月度返回矩阵,形式为 1000x300。我想对 yield 矩阵中每一行的每 12 列取平均值,得到年 yield ,最终得到一个 1000x25 矩阵。

我将如何在 Matlab 中执行此操作?

通过一些快速搜索,我相信我可以以某种方式使用 reshape 函数,但我无法弄清楚如何在我的代码循环中实现它。

到目前为止,这是我的尝试。

for i = 1:25
Strategy1.MeanReturn(:,i) = mean(Data.Return(:,i+1):Data.Return(:,i*12+1));
end

仅供引用,+1 在那里是因为我忽略了矩阵的第一列。

但这导致我得到一个单一的 NaN 值。

最佳答案

您可以沿 3D 数组的第一个维度堆叠所需的子矩阵,然后沿该维度进行平均,并挤出生成的单一维度:

x = rand(10,20); % example data. 1000x300 in your case
N = 4; % group size. 12 in your case
y = reshape(x.', N, size(x,2)/N, []);
result = squeeze(mean(y,1)).';

关于matlab - 如何对矩阵中每一行的每 n 列进行平均?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37584292/

相关文章:

java - Java 中的 MATLAB 平滑函数

regex - Matlab正则表达式;环顾两个表达式中的任何一个

java - 在java中传递数组来获取平均中位数和众数

matlab - Libsvm 分类 MATLAB

python - 如何在 python 中将稀疏字典转换为 scipy.sparse 矩阵?

python - 如何在 Python 中从 Numpy 矩阵创建列表

matlab - 如何给三维矩阵赋值

c - 平均计算器的奇怪输出

c++ - 有没有比生成/累积更快的方法来计算函数结果的平均值?

matlab - 将 spfun 与两个相同顺序的稀疏矩阵一起使用