我有一个1x12向量和一个3x2x12矩阵,比如i x j x t。我想为每个i和每个j减去t的相应向量。我尝试了以下方法,但它不起作用。
for t=1:12
for j=1:2;
for i=1:3
MSFE_i(i,:,j)=mean((y(1:12)'-forecasts(i,j,:)).^2);
end
end
end;
我在这里缺少什么想法?提前谢谢。
答案 0 :(得分:2)
您可以使用bsxfun
从每个元素中减去1 x 12
向量
difference = bsxfun(@minus, forecasts, permute(y, [3 1 2]);
并完全计算您尝试的内容:
MSFE = mean(bsxfun(@minus, forecasts, permute(y, [3 1 2]).^2, 3);
如果您使用的是MATLAB R2016b或更高版本,则可以省略bsxfun
difference = forecasts - permute(y, [3 1 2]);
MSFE = mean((forecasts - permute(y, [3 1 2])).^2, 3);