0

我有一个 3-Dimensional matrix 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;

我想创建另一个循环,其中在循环中创建新矩阵的名称。

IE;

K1(l,j)=K(1,j,l) (when i=1)
K2(l,j)=K(2,j,l) when i=2...

我面临的问题是我似乎无法在循环中迭代地命名矩阵(K1,K2...K35),同时执行维度更改操作。我试过了num2strsprintf但由于某种原因它们似乎不起作用。如果你们有任何想法,请告诉我。谢谢!

4

2 回答 2

1

I don't understand why you want to assign different names to your matrices. Can't you just store them in a cell like this:

K = cell(35, 1);
for ii=1:35
  K{ii} = squeeze(K_DEA(ii, :, :))';
end

Otherwise, if you really need to have different names, then do this:

K = cell(35, 1);
for ii=1:35
  eval(sprintf('K%d = squeeze(K_DEA(ii, :, :))'';', ii));
end
于 2013-10-26T14:22:26.450 回答
-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
于 2013-10-26T14:44:23.293 回答