Может кто-нибудь помочь мне понять, где я иду не так внизу?Я использую mfilt.firinterp для интерполяции синусоиды с коэффициентом 4, используя фильтр с отсечкой 0,7 * (фс / 2).Синусоида имеет частоту 0,1 Гц, а у меня частота дискретизации 10 Гц.Фильтр нижних частот, используемый для интерполяции, поэтому имеет срез 3,5 Гц, и должен легко пропускать этот сигнал.Я, должно быть, делаю что-то не так.
Если я установлю обрезку на 0,25 * fs / 2, все будет хорошо.Но означает ли это, что сигналы с частотным содержанием чуть выше 0,25 * фс / 2 (например, 0,4 * фс / 2) не могут быть интерпретированы линейно (или, как можно этого добиться?).
Подождите минуту,я путаю старый фс и новый фс?Если fs = fs_new = 40 Гц, тогда я могу понять, что происходит.Если я установлю значение среза 0,25 * fs_new / 2, где fs_new = 40 Гц, то имеет смысл, что это верхняя частота среза 10 Гц (исходная частота дискретизации).Таким образом, Wn в fircls1 (95, Wn, 0,01, 0,0001) должно быть <= 0,25.Это звучит правильно? </p>
Заранее спасибо за любые комментарии.
% create input
told = (0:1:299)/10; % time index for plotting xold
tnew = (0:1:1199)/40; % time index for plotting xnew
xold = sin(2*pi*0.1*told + 1); % fc=0.1Hz (Pc=10 sec); samplerate = fs = 10Hz
% create filter
num = fircls1(95, 0.7, 0.01, 0.0001); % set filter cutoff to 0.7*(fs/2)=3.5Hz
Hm = mfilt.firinterp(4,num);
% apply filter
xnew = 4*filter(Hm, xold);
% plot results
plot(told, xold, 'bo', tnew, xnew, 'r+');
title('Input (blue) and filtered input (red) versus time index');