2016-05-10 2 views
-1

exapmleセルアレイA {1x100}を取ります。 Aの各セルは画像Mx です。例: A 1,1は420x であり、A {1,2}は400x であり、A {1,100}は700x5 である。いくつかの操作の後、行列を小さな行列に再連結する方法はありますか?

私はすべてのセル垂直を連結するとき、私はNX5000 MATRIXのBを取得します。 ティーチングボックスを行った後、5000だから20に低減され、私は今の画像MX20

を持って、どのように再連結することができ、新しいNX20 行列Bサイズ初期セルアレイなどのセルアレイにB {1,1}、Bは{1,2} 400X で、420×です... B {1100}は変数vertSizesを含むベクター1x100とする700X

答えて

1

あります変数Cは、Bからのすべての行列を含む新しいセルになります。次のコードは、そのジョブで動作するはずです。

vertSizes = [0, vertSizes]; 
for i = 1 : length(vertSizes) - 1 
    previousPos = sum(vertSizes(1:i)); 
    newPos = previousPos + vertSizes(i+1); 
    C{1,i} = B(previousPos+1:newPos, :) 
end 
+0

ありがとうございます!今、どのようにしてCのセルのn-1を1つの行列に入れ、もう1つを別の行列に入れることができます。つまり、C言語で10個のセルがある場合、どのようにして行列内の最初のセルを縦9個、別の行列内の1個の左のセルに連結することができます。このプロセスは、すべての10個のセルについて繰り返されるべきである。即ち、10回のイタレーションの各々において、異なるセルが保持され、他の9つのセルが垂直に連結されるべきである。 – Xio

+0

これを行うには、別のループ "for j = 1:n"を別のループ "k = 1:n"の内側に使用する必要があります。両方のループの中で、 "j =〜kならば、連結してください"という条件を持つことができます。 – DomDev