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

Matlab 如何从三维矩阵的向量元素中减去,matlab,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; 你知道我错过了什么吗?提前感谢。您可以使用bsxfun从每个元素中减去1 x 12向量 difference = bsxfun(@minus, for

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

你知道我错过了什么吗?提前感谢。

您可以使用
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);
如果您使用的是MatlabR2016B或更高版本,则可以省略
bsxfun

difference = forecasts - permute(y, [3 1 2]);
MSFE = mean((forecasts - permute(y, [3 1 2])).^2, 3);

我不明白你的意思:“我想为每个
I
和每个
j
减去
t
的对应向量。”。你所说的“不起作用”是什么意思?什么是
MSFE_i
y
,以及
预测
?请看:如果y是一个向量1x12,那么我想从y(1,1)中减去y(1,1,1)的预测(1,2)的预测(1,1,2)…对于y(1,12)的预测(1,1,12),然后对于y(1,1)的预测(1,2,1)…y(1,2)的预测(1,2)…直到y(1,12)的预测(1,2,12)…然后对于y(1,1,1,1,2)…的预测(1,12)也是一样(3,2,12)。我希望这会有所帮助。msfe是这些减法的结果。当我应用上面的代码时,我收到一条消息矩阵维度必须agree@I.Souropanis记住将问题标记为已接受(在左上角打勾)