こんにちは私はMatlab(PDS(:、39))に値の列があります。この列はさまざまなものでフィルタリングされ、有効な行の場合は0、無効な行の場合は-1の2つの個別のフラグ付け列(PDS(:、[41 81]))があります。有効なデータの平均を取得しています。平均が0を超える場合は、この値を無効にして、平均が特定の値(この場合は0.2)を下回るまで平均を再度取得します。これが私のコードです:
% identify the VALID values
U1 = (PDS(:,81)==0);
F1 = (PDS(:,41)==0);
% only calculate using the valid elements
shearave = mean(PDS(U1&F1,39));
while shearave > 0.2
clear im
% determine the largest shear value overall for filtered and
% non-flagged
[c im] = max(PDS(U1&F1,39));
% make this value a NaN
PDS(im,39)=NaN;
% filter using a specific column and the overall column
PDS(im,41)=-1;
F1 = (PDS(:,41)==0);
% calculate shear ave again using new flagging column - remove the ";" so I can see the average change
shearave = mean(PDS(U1&F1,39))
end
Matlabが提供する出力は次のとおりです。
シアーブ=
0.3032
シアーブ=
0.3032
シアーブ=
0.3032
等
ループは、新しい有効なデータで再評価されていません。この問題を解決するにはどうすればよいですか?休憩を使用する必要がありますか、それとも続行する必要がありますか?または、おそらく別のタイプのループですか?助けてくれてありがとう。