전 세계 기상 데이터를 사용하고 있습니다. 데이터는 경도 x 위도 x 시간 단계를 나타냅니다. 모든 위도와 경도에 대해 5 일 이동 평균을 계산하고 싶습니다.3 차원에 대한 기상 데이터의 이동 평균 계산
아래 이미지는 데이터 구조를 보여줍니다. 움직이는 창의 길이를 정의하는 루프를 만들려면 어떻게해야합니까?
전 세계 기상 데이터를 사용하고 있습니다. 데이터는 경도 x 위도 x 시간 단계를 나타냅니다. 모든 위도와 경도에 대해 5 일 이동 평균을 계산하고 싶습니다.3 차원에 대한 기상 데이터의 이동 평균 계산
아래 이미지는 데이터 구조를 보여줍니다. 움직이는 창의 길이를 정의하는 루프를 만들려면 어떻게해야합니까?
대신 루프를 사용하는 세 번째 차원의 평균 필터를 지정 convn
기능을 사용하는 것이 좋습니다. 당신이 할 수있는 것은 창 크기를 정의하는 것입니다. 예를 들어 5를 말한 다음, 평균 출력이 무엇인지를 알려주기 위해 convn
을 사용하십시오. 또한 창이 유효하지 않은 데이터를 처리 할 때 수행 할 작업을 정의 할 수 있습니다. 단순화하기 위해 출력 모양을 입력과 동일하게 지정할 수 있으므로 'same'
플래그를 지정합니다. 이것이 의미하는 바는 첫 번째 (n - 1)/2 시간 관측의 경우, 이것은 패딩 된 요소가 0 인 평균을 찾는 것이므로 관찰하는 방법에 달렸지 만 관측 윈도우 내에서 유효한 요소의 경우, 각 위도와 경도 내에서 인접 시간 단계를 통해 계산 된 평균으로 해석 할 수 있습니다.
당신이 많은 우리에게 주신하지만 A
에 저장되어있는 입력 행렬을 가정하지 않은, 단순히 수행
A = ...; % Define A here
n = 5; % Define window size
B = permute(ones(n, 1)/n, [3 2 1]); % Define filter
C = convn(A, B, 'same'); % Perform average
permute
이 사용 된 이유는의 열 벡터 인 평균 필터를 변환하는 것입니다 1/n
여기에서 n
은 3D 싱글 톤 열로 사용자의 창 크기이므로이 값을 사용하여 3 차원에서 필터링 할 수 있습니다. 출력 C
에는 평균 결과가 포함됩니다.
감사합니다. 선생님, 제공된 질문은 완벽합니다. 존경하고 안부 – khan