私はセル配列している:私は入手いくつかの基準に基づいて配列内のセルを置き換えるにはどうすればよいですか?
im = {'A+' NaN 'B-'; NaN NaN NaN; NaN 'A+' 'B+'; 'B+' NaN 'A-'; 'B+' NaN NaN; 'B-' 'A-', NaN}
、そこから:
refPoints = find((any(strcmp('A+', im),2) | any(strcmp('A-', im),2)) & (any(strcmp('B+', im),2) | any(strcmp('B-', im),2)))
います:
refPoints = [1;3;4;6]
を今、私はそうするようim
をループしたいですあまりにも近いポイントを無効にして(例えば、1の倍率で)、対応するセルを0に置き換えます。
この例では、refPoints 3 and 4
は近いので、無効にする必要があります。私は、次のコードを試してみました
im = {'A+' NaN 'B-'; NaN NaN NaN; NaN NaN NaN; NaN NaN NaN; 'B+' NaN NaN; 'B-' 'A-', NaN}
と
refPoints = [1;6]
:
for ii = 1: size(im, 1)-1
if find((any(strcmp('A+', im(ii,:))) | any(strcmp('A-', im(ii,:)))) & (any(strcmp('B+', im(ii,:))) | any(strcmp('B-', im(ii,:)))))==true ...
& find((any(strcmp('A+', im(ii+1,:))) | any(strcmp('A-', im(ii+1,:)))) & (any(strcmp('B+', im(ii+1,:))) | any(strcmp('B-', im(ii+1,:)))))==true
im(ii,:) ={NaN};
end
end
これが3行目に予想されるのではなくて、私はこのように私の最終的な結果があることを期待します4行目。私はここで間違って何をしているのか分かりませんが、何をすべきか分かりません。
これに関するご意見、ご提案、アドバイスなどありがとうございます。前もって感謝します。
ありがとう@ m7913d。それは完全に動作します。これは私にとってどのように機能しているのですか?このisPreviousToCloseというものは何ですか? – User1772
'isPreviousToClose'は、前の行が削除された場合にtrueになります。現在の行があなたの条件に合っていれば、前の行が閉じる(つまり 'isPreviousToClose')か、次の行が閉じることになると、それは近すぎるでしょう。最後の行は、forループ( 'size(im、1)-1')で扱われないため、別のifテストが必要です。 プログラムをより良く理解するには、MATLABデバッガを使用してコードをステップバイステップで実行すると便利です。 – m7913d
ええ、私はあなたが意味するものを参照してください。大変ありがとうございました!..非常に感謝しています... – User1772