2016-12-21 16 views
0

私はmatlabで構造体を使いたいが、最初の繰り返しでは正しく実行され、他の繰り返しではそのメッセージが与えられる。構造をmatlabで使用する

フィールドを持つの1x2 struct配列:

私のコードは次のとおりです。

for i=1:lenfd 
    currow=rees(i,:) 
    maxcn=max(currow) 
     if maxcn~=0 
     maxin=find(currow==maxcn) 
     ress(i).x =maxin 
     end 
    end 

はあなたに感謝。

答えて

3

このメッセージは警告またはエラーではありません。これは、MATLABが操作の出力を出力することです。そして、それがない限り、デフォルトで、あなたがコマンドにセミコロンを追加することによって、それを抑制することを行います。

for ii = 1:lenfd 

    currow = rees(ii,:); % <=== NOTE: semicolons at the end 
    maxcn = max(currow); 

    if maxcn ~= 0 
     ress(ii).x = find(currow==maxcn); 
    end 

end 

max()は2つの出力を有することが、最大値が発生した配列への最初のインデックスである第2の出力。最大値が1回だけ発生することを事前に知っている場合は、find()への呼び出しをスキップして、max()という2番目の出力を使用することができます。

+0

ありがとうございます。私は結果を各段階で見たいので、セミコロンを使用しないでください。各反復ごとにmaxが1つの値を返しますが、maxcnには多くの値が含まれている可能性があります。私のコードはいつかこのエラーを返す " 非構造体配列オブジェクトへのフィールドの割り当て" – sara

+0

@ saraそれがあなたのエラーメッセージなら、なぜあなたは別のメッセージについて尋ねましたか? –

+0

は両方ともこのコードの異なる実行で示されています – sara

関連する問題