[an error occurred while processing this directive]
|
Гляньте на приведенный код и подумайте, почему циклическая свертка работает лучше. ФФТ ведь инвариантно к циклической свертке.
А вот как сделать, чтоб при линейной свертке хорошо фильтровало,
подумайте пока сами.
Пока времени нет выдать готовый результат, да и задачу может быть немного подробнее раскрыть не мешало бы. :-)
clear all
fd=1000;
N=1000;
t=0:(1/fd):(N-1)*1/fd;
f1=100;f2=125;
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));
figure(1)
plot(10*log10(abs(fft(s))))
hold on
plot(40+10*log10(abs(fft(b,length(s)))),'r')
%sk=upfirdn(s,b,1,1);
%sk=sk(length(b):end);
sk=cyclconv(s,b);
plot(3+10*log10(abs(fft(sk))),'g')
grid on
zoom on
hold off
function y=cyclconv(x,z);
y=conv(x,z);
y=y(1:length(x))+[y(length(x)+1:end) zeros(1,2*length(x)-length(y))];
E-mail: info@telesys.ru