0

私の質問には2つの部分があります:

  1. 指定された行列をその列に分割します
  2. これらの列は配列に格納する必要があります

例えば、

A = [1 3 5 
     3 5 7
     4 5 7
     6 8 9]

これで、最初の部分の解決策がわかりました。

列は経由で取得されます tempCol = A(:,iter), where iter = 1:end

問題の 2 番目の部分については、(このようなもの、おそらく arraySplit 配列への別のインデックス付け) が必要ですが、A の 1 つの完全な列は、splitArray の単一のインデックスに格納する必要があります。

arraySplit(1) = A(:,1)
arraySplit(2) = A(:,2)

等々...

マトリックスの例ではA

arraySplit(1)私に与えるべきです [ 1 3 4 6 ]'

arraySplit(2)私に与えるべきです[ 3 5 5 8 ]'

列ベクトルを配列に割り当てようとすると、次のエラーが発生します。

In an assignment  A(I) = B, the number of elements in B and I must be the same.

の割り当てとアクセスをarraySplit間違っています。助けてください...

4

3 に答える 3

1

本当にそれAはあなたが望んでいるもののように聞こえます-私はあなたがそれらを分割することによって何かを得るシナリオを想像することはできません. しかし、もしそうなら、あなたの最善の策はおそらくセル配列です。

C = cell(1,3);
for i=1:3
   C{i} = A(:,i);
end

編集:これを行うよりエレガントな方法については、以下の@EitanTのコメントを参照してください。また、ベクトルへのアクセスは、設定と同じ構文を使用します。たとえばv = C{2};、 の 2 番目の列を に配置Avます。

于 2012-09-05T01:22:05.970 に答える
0

Matlab 配列では、各要素は同じ型でなければなりません。ほとんどの場合、それは float 型です。あなたの例 A(:, 1) は 4 x 1 の配列です。たとえば、B(:, 2) に代入する場合、B(:, 1) も 4 x 1 の配列でなければなりません。

噛み付いている可能性のある一般的なエラーの 1 つは、4 x 1 の配列と 1 x 4 の配列は同じものではないということです。1 つは列ベクトルで、もう 1 つは行ベクトルです。A(:, 1) を転置して、1 行 4の配列を取得してみてください。

于 2012-09-05T00:07:25.613 に答える
0

次のようなことを試すことができます。

A = [1 3 5; 
3 5 7;
4 5 7;
6 8 9]

arraySplit = zeros(4,1,3);

for i =1:3
    arraySplit(:,:,i) = A(:,i);
end

を呼び出しarraySplit(:,:,1)て最初のベクトルを取得しますが、 とまったく同じ値にアクセスすることで簡単に実行できるため、これは不要な手順のようA(:,1)です。

于 2012-09-05T00:20:31.537 に答える