用Matlab实现复杂循环



设五个矩阵如下:

 A=  [A1 A1 A1 A1 A1; A2 A2 A2 A2 A2; A3 A3 A3 A3 A3]
 B= [B1 B1 B1  B1  B1; B2 B2  B2 B2 B2;B3 B3 B3 B3 B3]
 C=[ C1 C1 C1 C1 C1; C2 C2 C2 C2 C2; C3 C3 C3 C3 C3]
 D= [D1 D1 D1 D1 D1 ; D2 D2 D2 D2 D2; D3 D3 D3 D3 D3]
 E=[ E1 E1 E1 E1 E1; E2 E2 E2 E2 E2; E3 E3 E3 E3 E3]

我想编写这样一个程序,它的输出包括取每个给定矩阵的每一行并形成一个新矩阵。当矩阵的长度增加,给定矩阵的数量也增加时,如何使用循环。这个问题在我看来很复杂。因为我想通过使用循环和输出来推广任意数量的矩阵,比如20并且列数也增加到25,那么如何得到P1到P20的输出。有人可以帮助我解决这个复杂的问题,使用Matlab

P1=[ A1 A1  A1 A1 A1; B1 B1 B1 B1 B1; C1 C1 C1 C1 C1 C1; D1 D1 D1 D1 D1; E1 E1 E1 E1 E1]
P2=[ A2 A2  A2 A2 A2; B2 B2 B2 B2 B2; C2 C2 C2 C2 C2 C2; D2 D2 D2 D2 D2; E2 E2 E2 E2 E2]

和类似的其他矩阵。

注:给定的5个矩阵是在循环的帮助下生成的。首先我得到的值是:

  A= A1
  B= B1
  C=C1
  D=D1
  E=E1
  A= A1 A1 
  B= B1 B1
  C=C1  C1
  D=D1  D1
  E=E1  E1 .... AND SO ON

得到一个循环,把所有的矩阵放在一起形成一个三维张量。或者只是在创建矩阵时将它们放在三维张量中。

M(:,:,1) = A; M(:,:,2) = B; etc
然后

squeeze(M(1,:,:))' is the P1, squeeze(M(2,:,:))' is the P2

的例子:

M(:,:,1) =
     1     2
     3     4

M(:,:,2) =
     5     6
     7     8
>> squeeze(M(1,:,:))'
ans =
     1     2
     5     6

最新更新