Arrays 重组矩阵

Arrays 重组矩阵,arrays,matlab,matrix,Arrays,Matlab,Matrix,我想从由perm(:,I)定义的节点上的矩阵B中提取矩阵,这些节点是emp的第I列矩阵,我想计算A1=B(perm(:,1),perm(:,1)),A2=B(perm(:,2),perm(:,2)),这样做一个循环: for i=1:n I got A1, A2 and so on – 根据perms矩阵,我可以看出,您似乎想要从矩阵B中动态提取一个子矩阵。您的问题似乎是,您无法在循环中执行此操作,因为您不知道如何动态创建矩阵。您的解决方案是创建一个单元格并在单元格中输入每个子矩阵。因

我想从由
perm(:,I)
定义的节点上的矩阵B中提取矩阵,这些节点是
emp
的第I列矩阵,我想计算
A1=B(perm(:,1),perm(:,1))
A2=B(perm(:,2),perm(:,2))
,这样做一个循环:

for i=1:n
    I got A1, A2 and so on –

根据perms矩阵,我可以看出,您似乎想要从矩阵B中动态提取一个子矩阵。您的问题似乎是,您无法在循环中执行此操作,因为您不知道如何动态创建矩阵。您的解决方案是创建一个单元格并在单元格中输入每个子矩阵。因此,如果A是你的细胞

A=cell(1,N);

for i=1:N
  A{i}=B(perm(:,i),perm(:,i));
end
你可以使用

Ai=A{i};  %notice the curly braces {}

如果确实需要名为A1、A2和c的变量,可以使用
eval

for i = 1:N
  eval(['A' num2str(i) ' = B(perm(:,i),perm(:,i))']);
end

然而,这可能不是一个好主意,您最好使用@Jorge所示的单元格。单元格可以包含任何内容,而且更方便

我应该如何提取这个问题并进行循环,因为当I A(I)=B(perm(:,I),perm(:,I))时,它会给我错误。这个问题看起来与你的另一个问题非常相似,发布重复的问题不是获得答案的好方法(除非我误解了,在这种情况下,你可以忽略我的评论)。更重要的是,你应该尽可能详细地解释你的问题是什么(例如如何获得
B
perm
矩阵)以及你的上下文是什么,以便其他人能够理解你的问题并帮助你;间谍(K.A(perm,perm))间谍(K.A(perm(1:49),perm(1:49)))j=2;perm1=fem.intnodesinfo(fem.intnodesinfo(j)+1:sum(fem.intnodesinfo(j:j+1));A2=K.A(perm1,perm1);j=1;perm2=fem.intnodesinfo(fem.intnodesinfo(j)+1:sum(fem.intnodesinfo(j:j+1));A1=K.A(perm2,perm2);如果我这样做的话,那么每次我都要计算perm1,perm2等等,以及A1,A2等等,。但是我想计算perm(I),通过使用I=1:n我可以得到A(I),这样我就不需要每次单独计算,我不知道我能不能解释清楚。实际上我是stack和matalb的新用户,我不知道如何正确使用它,我为我所做的任何事情感到抱歉。@user1131808:我建议你用上面的评论来编辑你的问题,以使它更清楚。正如您所看到的,读取注释中的代码非常困难。