我有一个三维矩阵K(i,j,l)
。我想从K创建一个新的矩阵,它将是i的每个值的切片。我还必须转换新形成的二维矩阵。
for l=1:40
for j=1:15
K1(l,j)=K(1,j,l);
K2(l,j)=K(2,j,l);
.
.
.
K35(l,j)=K(35,j,l);
end;
end;
我想创建另一个循环,在循环中创建新矩阵的名称。
即;
K1(l,j)=K(1,j,l) (when i=1)
K2(l,j)=K(2,j,l) when i=2...
我遇到的问题是我似乎无法在循环中迭代地命名矩阵(K1,K2 ... K35),同时执行尺寸变换操作。我尝试了num2str
,sprintf
,但由于某种原因,它们似乎无法运作。如果您有任何想法,请告诉我。谢谢!
答案 0 :(得分:1)
我不明白为什么要为矩阵指定不同的名称。你不能把它们存储在这样的单元格中:
K = cell(35, 1);
for ii=1:35
K{ii} = squeeze(K_DEA(ii, :, :))';
end
否则,如果您确实需要使用不同的名称,请执行以下操作:
K = cell(35, 1);
for ii=1:35
eval(sprintf('K%d = squeeze(K_DEA(ii, :, :))'';', ii));
end
答案 1 :(得分:-1)
如果我理解你的问题,以下应解决你的问题:
K1=squeeze(K(1,:,:))';
K2=squeeze(K(2,:,:))';
.
.
.
K35=squeeze(K(35,:,:))';
用于循环i=1:35
for i=1:35
name = sprintf("K%d",i);
A = squeeze(K(i,:,:))';
eval([name ' = A']);
end
或者更简洁,
for i=1:35
eval([sprintf("K%d = squeeze(K(i,:,:))'",i)]);
end