Я вчера поставил Оctave нарисовал свой сигнал и пропробовал его пропустить через фильтр.
Честно говоря я ожидал получить потери какие то из за некоторого времени нужного на заполнение фильтра.Это несколько раз мне попадалось
в статьях про фильтры что нормально начинает работать после заполнения всех ячеек сигналом. Но он вроде как ничего не теряет по факту
я думаю это вас должно устроить.
clear
clc
%формируем выборки c частотой Fc затухающего импульса с заполнением f
f = 8000000; % рабочая частота заполнеия
Fc= 25000000; % частота АЦП
Tsamplers = 1/Fc;
N = 1:200; %длинна окна выборки
sig_8_meg = sin(2 * pi() * f * Tsamplers * N);
exp_8_meg = (exp((N * 100) /4000).*sig_8_meg);
exp_8_meg = exp_8_meg(end
1);% разворачиваем последовательность
%рисуем исходный импульс до всех фильтров
figure
plot(exp_8_meg)
%----------------------------FIR_________
%пропускаем импульс через полосовой фильтр
f1 = 7500000/(25000000/2);
f2 = 8500000/(25000000/2);
dB = 40;
Nf=100;
hc = fir1(Nf, [f1 f2]);
y2 = filter(hc,1,exp_8_meg);
%рисуем сигнал полсле фильтрации
figure
plot(y2)
exp_8_meg = y2;
%----------------FIR end_______________________
%смотрим АЧХ после фильтрации
F=fft(exp_8_meg);
F1=fftshift(abs(F));
F1 = F1(max(size(N))/2+1:max(size(N))); %Discard Half of Points
f_x = Fc*(0:max(size(N))/2-1)/max(size(N)); %Prepare freq data for plot
figure,plot(f_x,20*log10(F1)); % преобразование Фурье
%axis([, , -60 10])
xlabel('Frequency (Hz)')
ylabel('db')
title('Frequency Response ')
grid