2016-08-18 14 views
1

セル(D)の内部に3つの行列(abc)を格納する簡単なmatlabテストコードを書きました。次に、インデックスのベクトル(idx)を作成して、セルの第1および第3の行列のみを選択することができます。私はD{:,1}を表示する場合、私は私の目標は、(a、b)は、セルDのうちで2つの行列を連結することであるMatlabのセルから行列を連結する

ans = 

    0  1 
    2  3 

ans = 

    5  6 
    7  8 
    9 10 

で何を得る

% Begin code % 
a = [0 1; 2 3];  % matrix a 
b = [4 5];    % matrix b 
c = [5 6; 7 8; 9 10]; % matrix c 

D = cell(3,1);   % Initialize cell D 
D{1,1} = a; D{2,1} = b; D{3,1} = c; % Copy matrices inside cell 

idx = [1 3]'; % Indexes vector 

D = D(idx); % select matrix a and c from D 
% End code (Solution should start from here...) % 

:コードは以下の通りでありますスマートな方法(いくつかの特定の組み込みのMATLAB関数を使用して)とおそらくforループを避ける; これは私が欲しいものです:

E = [0 1 
    2 3 
    5 6 
    7 8 
    9 10]; 

ソリューションは、最もエレガント可能でなければなりませんが、私は、任意の提案に開いています。ソリューションは私が書いたものの続きでなければならないので、唯一の制約は、私が提示したコードを変更しないことです。

注意:私は行列の未定義の数で動作するはず行うにしようとしていますどのようなので(この例では、私は3つだけ持っているだけでなく、1000年かもしれない)、E = [D{1,:};D{2,1}]のようなソリューションが受け入れられません。私の質問に

答えて

2

回答here実測値:

cat(1,D{:}) 
+0

Puoi anche usare 'vertcat(D {。})' :-) –

関連する問題