Matlabに86400の風速(WS)値の1秒のデータセットがあり、それをフィルタリングするための支援が必要です。それにはある程度の賢さが必要です。
平均WSが次を超える場合:
- 600秒間隔で25m/s
- 30秒間隔で28m/s
- 3秒の時間間隔で30m/s
これらのパラメータのいずれかが満たされた場合、平均WSが300秒の時間間隔で22m / sを下回るまで、WSは「無効」と見なされます。
これが600秒の要件に対して私が持っているものです。'dataset'に含まれるデータに対して600秒と300秒の移動平均を実行します。平均25m/sの最初の出現から22m/s未満の値の次の出現までの間隔を「NaN」としてフィルタリングします。フィルタリング後、さらに600秒の平均を実行し、NaNでフラグが付けられた値の間隔はNaNのままになります。
すなわち
Rolling600avg(:,1) = tsmovavg(dataset(:,2), 's', 600, 1);
Rolling300avg(:,1) = tsmovavg(dataset(:,2), 's', 300, 1);
a = find(Rolling600avg(:,2)>25)
b = find(Rolling300avg(:,2)<22)
dataset(a:b(a:find(b==1)),2)==NaN; %?? Not sure
これには、「find」の巧妙な使用といくつかのインデックス付けが必要になります。誰かが私を助けてくれますか?28m/sと30m/sのフィルターは同じ方法に従います。