Matlab에서 86400 풍속 (WS) 값의 1 초 데이터 세트를 가지고 있으며 필터링에 도움이 필요합니다. 그것은 어느 정도의 영리함을 필요로합니다.두뇌 티저 - 이동 평균을 사용한 알고리즘 필터링
평균 WS 초과 경우
- 25m/s를 600S의 시간 간격
- 28m/s 30 시간 간격
- 30m/s로 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