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

How to Concatenate multiples variables with different size using Matlab ?

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

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

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

我发现以下循环:

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

可以连接 I 并在 情况下生成 VOLUME I 大小相同

但是当 I 可以采用不同尺寸时,我该怎么办?

您只能使用 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{:});

效果相同。