私はMatlabの86400風速(WS)値の1秒のデータセットを持っており、それをフィルタリングする際に助けが必要です。一定のレベルの賢さが必要です。脳ティーザー - 移動平均を使用したフィルタリングアルゴリズム
平均WSを超えた場合:
- 25メートル/秒の30秒の時間間隔
- 3秒の時間間隔
これらのパラメータのいずれかが満たされている場合、平均WSが300秒の時間間隔で22m/s以下になるまで、WSは「無効」とみなされます。
ここには600秒の要件があります。私は 'データセット'に含まれるデータに対して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
これは、「検索」や、いくつかのインデックスの巧妙な使用を必要とする予定です。誰かが私を助けてくれますか? 28m/sと30m/sのフィルターは同じ方法に従います。
問題を解決するにはあまり関係はありませんが、「WS」では風速を意味すると思いますか? – Mac
はい、ありがとうございます。私はそれを付け加えた。 – user1854628
最後の声明で何をしようとしていますか? – jerad