是否可以从1xm矩阵创建3D矩阵?我想将矩阵的每一列分成第三维。这是related question。但是,它并没有涉及1xm矩阵的倍数,我做了。
a=randi([1 5], [1 100]);
b=randi([1 5], [1 100]);
c=randi([1 5], [1 100]);
d=randi([1 5], [1 100]);
%this is where I wanted to split the matrix when assembling
K=[b d a;
b 0 a;
b c a];
结果K
矩阵应为3x3x100
。在每个第三维中,a b c d
的值是它们对应的列。例如:
k(:,:,1)=[b(1,1) d(1,1) a(1,1);
b(1,1) 0 a(1,1);
b(1,1) c(1,1) a(1,1)];
.
.
.
k(:,:,n)=[b(1,n) d(1,n) a(1,n);
b(1,n) 0 a(1,n);
b(1,n) c(1,n) a(1,n)];
有效的方法吗? 感谢您的任何意见!
答案 0 :(得分:2)
您可以使用permute
来交换矢量尺寸:
a=randi([1 5], [1 100]);
b=randi([1 5], [1 100]);
c=randi([1 5], [1 100]);
d=randi([1 5], [1 100]);
% permute dimensions to 1x1x100
a = permute(a,[1 3 2]);
b = permute(b,[1 3 2]);
c = permute(c,[1 3 2]);
d = permute(d,[1 3 2]);
%this is where I wanted to split the matrix when assembling
K=[b,d,a;
b,zeros(size(a)),a;
b,c,a];
size(K) % 1x1x100
在concat之后你也可以permute
K
:
a=randi([1 5], [1 100]);
b=randi([1 5], [1 100]);
c=randi([1 5], [1 100]);
d=randi([1 5], [1 100]);
K = cat(3,[b;b;b],[d;zeros(size(a));c],[a;a;a]);
K = permute(K,[1 3 2]);