如何使用 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{:});
效果相同。
我有多个不同大小的变量: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{:});
效果相同。