0

私は与えられた行列からmatlabで1Dベクトルを作成したいので、このために私は簡単な方法を使用する次のアルゴリズムを実装しました

% create   one dimensional vector from 2D  matrix
function [x]=one_dimensional(b,m,n) 
 k=1;
 for i=1:m 
     for  t=1:n
         x(k)=b(i,t);
         k=k+1;
     end
 end
  x;
end

次の例を使用して実行すると、タスクがうまくいくようです

b=[2 1 3;4 2 3;1 5 4]

b =

     2     1     3
     4     2     3
     1     5     4

>> one_dimensional(b,3,3)

ans =

     2     1     3     4     2     3     1     5     4

しかし、一般的に、配列はパフォーマンスであるため、matlabで使用するのに適した方法ではないことを知っています。行列を行/列ベクトルに変換するための効果的な方法は何ですか?私はパフォーマンスを気にしています.どうもありがとう

4

1 に答える 1

2

演算子を使用できます(:)...しかし、行ではなく列で機能するため、'前に演算子を使用して転置する必要があります。次に例を示します。

b=b.';
b(:)'

ans=
   2     1     3     4     2     3     1     5     4

行出力を取得するために再度転置しました(それ以外の場合は、列形式でのみ同じベクトルになります)

または、これはオプションです(おそらく遅いものです):

reshape(b.',1,[])
于 2013-03-23T10:11:06.587 に答える