2012-01-20 3 views
0

要素が0または1の変数を生成するためにMATLABを使用しようとしています。この変数を何らかの連結(Javaの文字列の追加と同等)を使用して定義したいのでいくつかの上限に応じて0と1を追加できます。MATLABで同等の1つの値を連結する

私は、forループを使って既存の変数に値を追加することしか考えられません。何かのように

variable=1; 
for i=1:N 
    if (i%2==0) 
     variable = variable.append('0') 
    else 
     variable = variable.append('1') 
    i=i+1; 
end 

これを行うには良い方法がありますか?

答えて

4

MATLABでは、ほとんどの場合、ベクトル化された方法で配列を処理することでループを回避できます。あなたが列ベクトルが必要な場合(1:N)'を使用し、上記の行は、コード(1:N)有する行ベクトル[1,2,...,N]を(生成

variable = mod((1:N),2); 

指定した擬似コードの結果として、一列に得ることができます)とmod関数(ほとんどのMATLAB関数)は、配列を受け取ったときに各要素に適用されます。

2

有効なMATLABコードではありません。

  1. %は、したがって、構文エラーを導入し、コメントの開始を示します。
  2. appendメソッドはありません(少なくとも配列ではありません)。
  3. forループでインデックスをインクリメントする必要はありません。別にそれはメモリが大幅に遅く、各時刻で再割り当てする必要があるとして、Matlabの「成長」の変数を持つことが悪いアイデアだとの

。正しいアプローチは、次のとおりです。

variable=zeros(N,1); 
for i=1:N 
    variable(i)=mod(i,2); 
end 

あなたが本当に変数(それは避けられないいくつかの回)あなたは、この使用することができます成長したい場合は、次の列を追加するため,を使用し、行を追加するため

variable=[variable;1]; 

使用;を(vertcatおよびhorzcatと同じです)。配列に2つ以上の次元がある場合はcatを使用してください。

関連する問題