如何使用Matlab连接不同大小的多个变量?

时间:2015-11-21 10:11:04

标签: matlab loops concatenation

我有一个不同大小的多个变量:A1xB1 , A2xB2, A3xB3, ...

我想将它们全部放在一个VOLUME中,例如AxBxC

假设I可以取大小AixBi的值。

我发现以下循环:

for ... 
     Volume = cat(3,Volume,I)
endfor

可以连接I并在案例I中生成VOLUME具有相同的大小

I可以采用不同尺码时,我该怎么办?

1 个答案:

答案 0 :(得分:0)

您只能使用cat来连接相同大小的 ,因为生成的数组必须是大小为n1 x n2 x n3的正确数组。因为在评论中你告诉我们填充你的变量不是一个选项,你必须使用一个单元格数组,其中每个元素都对应一个矩阵。

您可以使用循环

C = cell(1,nmats); %nmats number of arrays to concatenate
for n=1:nmats
   C{n} = ...; %your n-th array goes here
end

或者对于预定义的数组,您也可以调用

%C = cell(1,nmats);
%[C{:}] = deal(arr_1,arr_2,...*add variables here*...,arr_nmats);
C = {arr_1,arr_2,...*add variables here*...,arr_nmats};

我评论了我的原始版本,它有效,但是不必要的复杂。但是,deal的方法对于反转连接非常有用

[arr_1,arr_2,...*add variables here*...,arr_nmats] = deal(C{:});

达到同样的效果。