所以我有一个月度返回矩阵,形式为 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/