2016-07-24 18 views
-1

おはよう皆マージ結果機能

のための後、私は、産業技術の問題の一つを解決するための数学的モデルを開発するために働くが、私はMATLABコードの書き込みに問題があります。だから私は次のコードでこの問題を単純化しました。機能のための次のステップでそれを使用するために使用した後、私は

LIST=randi([0,1],[4,3]); 

for i = 1:10 
    j=i 

V=randi([0,1],[4,3]); 

for m = 1:4 
for n = 1:2 
    if V(m,n)== 1; 
     X(m,n) = LIST(m,n); 
    elseif V(m,n)== 0; 
     X(m,n) = 2; 
end 
end 
end 

for m = 1:4 
for n = 3 
    if V(m,n)== 1; 
     X(m,n) = LIST(m,n); 
    elseif V(m,n)== 0; 
     X(m,n) = 3; 
    end 
end 
end 

X 
end 

お時間をいただき、ありがとうございます(この単純なケースでは、この行列は40 * 3になります)1つの行列でXのすべての結果をマージする必要がありますあなたの考察

答えて

0

外部ループ(for i = 1:10)の各繰り返しで、X行列の値が上書きされます。もし4である第二のループ(for m = 1:4)の最大限界値のX行列の行の値をインクリメントする必要があるすべての値を格納するために

。あなたは次のようにX行列のインデックスを変更することによって、それを行うことができます

X(m+(i-1)*4,n) 

あなたはLIST行列の行数としてそれを評価する限界を識別することによって、あなたのスクリプトは、より「一般」を作ることができますこのよう

    [n_row,n_col]=size(LIST) 
    

    :機能size機能を使用して

  • は、外側ループの最初の反復で、行インデックスは1から4までの範囲です。 5から8
  • にあるITRが1+(2-1)*4から4+(2-1)*4の範囲で2回目の反復で
  • ので

にこれは、更新されたコード

LIST=randi([0,1],[4,3]); 
[n_row,n_col]=size(LIST) 

for i = 1:10 
    j=i 
    V=randi([0,1],[4,3]); 
% for m = 1:4 
    for m = 1:n_row 
     for n = 1:2 
     if V(m,n)== 1; 
%    X(m,n) = LIST(m,n); 
      X(m+(i-1)*n_row,n) = LIST(m,n); 
     elseif V(m,n)== 0; 
%    X(m,n) = 2 
      X(m+(i-1)*n_row,n) = 2; 
     end 
     end 
    end 
% for m = 1:4 
    for m = 1:n_row 
     for n = 3 
     if V(m,n)== 1; 
%    X(m,n) = LIST(m,n) 
      X(m+(i-1)*n_row,n) = LIST(m,n); 
     elseif V(m,n)== 0; 
%    X(m,n) = 3; 
      X(m+(i-1)*n_row,n) = 3; 
     end 
     end 
    end 
    X 
end 

では、この情報がお役に立てば幸いです。

Qapla」

+0

は、あなたの答えをありがとうございました、それは非常に有用であると私は正しいが、X(m個+(I-2)* n_row、ある修正私の場合はモデルが、Xの機能の唯一の1つの変更を使用n)= 3; –

+0

あなたのコメントを理解できません: 'X(m +(i-2)* n_row、n)= 3;'を使うと、 'V(mn)'の値に応じて無効なインデックスまたは否定的なもの)。 E.外部ループの最初の繰り返し '(i = 1)'、 'm = 1' ==>' X(1+(1-2)* 4、n) '==>' X(-3、n) ' 。別の場合、e。 g。 'i = 1'と' m = 4' ==> 'X(0、n)'です。 _Subscriptインデックスなどのエラーを取得する必要があります。インデックスは、正の整数または論理和のいずれかでなければなりません –