[an error occurred while processing this directive]
|
Вставьте
sk=sk(length(b):end);
после
sk=filter(b,1,s); %!!!
Вы так и делали в исходном варианте. Правильно. Просто забыли отрезать задний хвост, возникающий в upfirdn.
А теперь наоборот получилось - Вы отрезали задний а передний оставили :-(
Ну и смотреть результат теперь придется немножко модифицированной строчкой
plot(3+10*log10(abs(fft(sk,length(s)))),'g')
Вот полный вариант
clear all
fd=1000; %!!!
N=1024; %!!!
t=0:(1/fd):(N-1)*1/fd;
f1=100;f2=120; %!!!
A1=30;A2=1;
s1=A1*sin(2*pi*f1*t)+(A1-A1/4)*sin(2*pi*(f1+5)*t);
s2=A2*sin(2*pi*f2*t);
n=0*rand(1,N);
s=s1+s2+n;
b = fir1(680,[0.18 0.23],'stop',chebwin(681,80));
plot(10*log10(abs(fft(s))))
hold on
plot(40+10*log10(abs(fft(b,length(s)))),'r')
sk=filter(b,1,s); %!!!
sk=sk(length(b):end); %!!!!!!!!!!!!!!!!!!!
plot(3+10*log10(abs(fft(sk,length(s)))),'g')%!!!!!!!!!!!!!!!
hold off
E-mail: info@telesys.ru