如何从三维矩阵的向量元素中减去

时间:2016-12-12 14:19:27

标签: matlab

我有一个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; 

我在这里缺少什么想法?提前谢谢。

1 个答案:

答案 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);