我有一个不同大小的多个变量:A1xB1 , A2xB2, A3xB3, ...
我想将它们全部放在一个VOLUME中,例如AxBxC
。
假设I
可以取大小AixBi
的值。
我发现以下循环:
for ...
Volume = cat(3,Volume,I)
endfor
可以连接I
并在案例I
中生成VOLUME具有相同的大小。
但I
可以采用不同尺码时,我该怎么办?
答案 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{:});
达到同样的效果。