CODE
R = 4; % четырехкратная децимация
D = 2; % задержка
delayBuffer = zeros(1,D);
Acum = 0;
xn = zeros(1,128); xn(1) = 1; % входной сигнал, Дельта функция
output = zeros(1,(length(xn) / R));
decim = 0;
n = 1;
% Сначала интегрируем
for ii=1:length(xn)
Acum = Acum + xn(ii);
decim = decim + 1;
% ... потом децимируем
if(decim == R)
% ... тут гребеньчатый фильтр
Comb = Acum - delayBuffer(end);
delayBuffer(2:end) = delayBuffer(1:end-1);
delayBuffer(1) = Acum;
output(n) = Comb;
n = n + 1;
decim = 0;
end
end
D = 2; % задержка
delayBuffer = zeros(1,D);
Acum = 0;
xn = zeros(1,128); xn(1) = 1; % входной сигнал, Дельта функция
output = zeros(1,(length(xn) / R));
decim = 0;
n = 1;
% Сначала интегрируем
for ii=1:length(xn)
Acum = Acum + xn(ii);
decim = decim + 1;
% ... потом децимируем
if(decim == R)
% ... тут гребеньчатый фильтр
Comb = Acum - delayBuffer(end);
delayBuffer(2:end) = delayBuffer(1:end-1);
delayBuffer(1) = Acum;
output(n) = Comb;
n = n + 1;
decim = 0;
end
end
Для АЧХ этого фильтра я делаю freqz(output) и получаю (см. первый график). И тут у меня начались "проблемы в понимании". Неужели АЧХ не должно выглядить как-то вот так (см. второй график)? Я догадываюсь что АЧХ на выходе "свернулось" в один лепесток из-за прореживания дециматора - это так? Как тогда понимать, что при расчете CIC фильтра, учитывают уровни подавления последующих лепестков (за счет увеличения порядка фильтра), но при этом на выходе фильтра имеем АХЧ с одним лепестком...? А так же, уровень усиления в обоих случаях разнится
