1

次のように与えられる5つの行列があるとします。

 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
4

1 に答える 1

1

ループを取得し、すべての行列をまとめて3Dテンソルを形成します。または、作成時に3Dテンソルに行列を配置するだけです。

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
于 2013-03-01T05:39:30.743 に答える