将一个180x360阵列乘以156项时间序列得到180x360x156阵列?

时间:2013-11-11 23:51:32

标签: matlab bsxfun

bsxfun(@times,RegressIndexFlux.(IndexNames{i}).(FluxNames{j}), Indices.(IndexNames{i}));

所以我的代码就在上面。

bsxfun的问题是我收到以下错误消息:

Error using bsxfun
Non-singleton dimensions of
the two input arrays must
match each other.

所以这就是问题:如果可能的话,有没有办法让我通过时间序列转换180x360阵列而不必使用for循环? (我在这里使用了许多180x360阵列的结构)。基本上RegressIndexFlux会针对时间序列Indices进行回归,而我只是尝试使用回归来重建时间序列。

1 个答案:

答案 0 :(得分:2)

您不能拥有不匹配的非单件尺寸。置换第二个参数。假设Am-by-n矩阵而B是(p-by-1)列向量:

A = rand(6,5); B = rand(4,1);
% m-by-n @times 1-by-1-by-p => m-by-n-by-p
C = bsxfun(@times,A,permute(B,[3 2 1]));
size(C)
ans =
     6     5     4