I have been using a bandpass for my netcdf data, to have 30-80 day frequency.
Although Ive noticed until now that maybe Ive been putting the frequencies in the incorrect units:
frecuencia_min = 1 / 80; % Min frequency (cycle/day)
frecuencia_max = 1 / 30; % Max frequency (cycle/day)
% olr having 180x51x136, but for only an example olr has 1x1x136, being the
% last one the time dimension
olr_real(1,1,:) = bandpass(squeeze(olr_1(1,1,:)),[frecuencia_min frecuencia_max],1); % data is daily so fs=1
Are the units correct for the three frequencies?
Thanks! :)

 채택된 답변

William Rose
William Rose 2023년 9월 13일
You call bandpass() as folows:
frecuencia_min = 1 / 80; % Min frequency (cycle/day)
frecuencia_max = 1 / 30; % Max frequency (cycle/day)
yfilt=bandpass(y,[frecuencia_min frecuencia_max],1);
This specifies that the sampling rate is 1 sample per unit time, and the filter cutoff frequencies are frecuencia_min and frecuencia_max cycles per unit time.
Therefore, if your data are sampled at 1 per day, then your cutoff frequencies are correctly specified.

댓글 수: 2

Thank you very much!!
I have another question. Im doing the bandpass on 3D data as I mentioned before. Therefore I use a for cycle to filter each point of the grid as it follows
for i=1:length(lon)
for j=1:length(lat)
olr_real(i,j,:) = bandpass(squeeze(olr_1(i,j,:)),[frecuencia_min frecuencia_max],1); % data is daily so fs=1
fprintf('[%d] y [%d]\n',i,j);
end
end
Is this correct?
@Luis Jesús Olvera Lazcano, that looks good to me. I assume you have initialized olr_real with a command suich as below.
olr_real=zeros(size(olr_1)); % initialize olr_real

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

제품

릴리스

R2022b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by