реклама на сайте
подробности

 
 
> Интерполяция CIC фильтром
Olga_woroncova
сообщение Nov 28 2017, 08:28
Сообщение #1





Группа: Новичок
Сообщений: 4
Регистрация: 27-11-17
Пользователь №: 100 388



Здравствуйте! Подскажите пожалуйста, делаю интерполяцию с помощью CIC фильтра, вроде бы всё по теории, но у получившегося сигнала амплитуда меньше, чем должна быть. Почему так получается? правильно ли я выбираю коэффициент для нормирования амплитуды?
Код
close all; clc; clear;

% Формирование сигнала.
Fs = 1000;
T = 1/Fs;
L = 50;
t = (0:L-1)*T;

x = 5*sin(2*pi*50*t);

% Коэффициент интерполяции
R = 5;
T1 = 1/(R*Fs);
t1 = (0:R*L-1)*T1;

% Величина задержки
D = 2*R;

% Порядок фильтра
N = 4;

% Усиление
Klg = 20*N*log10(D);
K = D^N;

% Расчет коэффициентов передаточной функции
% H(w) = (1 - z^(-D))^N / (1 - z^-1)^N
b = 1;
a = 1;
for n = 1 : N
    b = conv(b, [1 zeros(1,D-1) -1]);
    a = conv(a, [1 -1]);
end

% АЧХ и ФЧХ полученного фильтра стандартными средствами матлаб.
figure;
freqz(b,a);

% Применяем фильтр к сигналу стандартными средствами матлаб
nx = zeros(1,R*L);
nx(1:R:R*L) = x;
y = filter(b,a,nx);
y = (y/K)*R;

% И смотрим результат
figure;
plot(t,x,'-o',t1,y, '-o')

xlabel('Время, с')
ylabel('Амлитуда сигнала, у.е.')
legend({'сигнал', 'filter()'})

Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
coding4dsp
сообщение Nov 28 2017, 08:59
Сообщение #2





Группа: Участник
Сообщений: 13
Регистрация: 30-08-17
Пользователь №: 99 040



Добрый день!

Во-первых, судя по АЧХ синус попадает на наклон, где сигнал претерпевает ослабление.
Во-вторых, ваш фильтр не стабилен! Посмотрите на сигнал, при L = 50000;

На CIC не очень похоже - CIC это FIR фильтр, а у вас IIR.
Go to the top of the page
 
+Quote Post
quato_a
сообщение Nov 28 2017, 12:26
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 95
Регистрация: 27-07-11
Из: Зеленоград
Пользователь №: 66 439



Цитата(coding4dsp @ Nov 28 2017, 11:59) *
На CIC не очень похоже - CIC это FIR фильтр, а у вас IIR.


CIC - это FIR (КИХ) ?


--------------------
Суббота начинается в понедельник
Go to the top of the page
 
+Quote Post
Kluwert
сообщение Dec 9 2017, 18:40
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 239
Регистрация: 15-11-09
Из: Санкт-Петербург
Пользователь №: 53 639



Цитата(quato_a @ Nov 28 2017, 15:26) *
CIC - это FIR (КИХ) ?

По-сути, CIC (фильтр Хогенауэра) - это совершенно тупой (нерекурсивный изначально) фильтр скользящего среднего. Заслуга Хогенауэра (можно легко найти его статью в Инете), что, используя формулы бинома Ньютона, он представил его в виде рекурсивного фильтра. Мало того, при конечной разрядности, он использует сумматоры с циклическим перполнением, у которых ещё и переменная разрядность как функция номера секции. Во времена, когда ещё даже не сущестовало даже БМК (и, тем более, ПЛИС) - это было великим делом.

Но у CIC-фильтров есть один существенный недостаток: легко прикинуть, что, т.к. он равноценен некому фильтру СС, то его АЧХ будет типа sinc(f), что приводит к дикой неравномерности АЧХ в полосе пропускания. Как правило этот фильтр используется в квадратурных приёмниках и если допустимо, что бы частота оцифровки квадратур была заметно больше полуширины полосы сигнала, то - можно с этим жить. Но, как правило, это не позволительная роскошь. А тогда, на выходе этого фильтра приходится примастрячивать компенсирующей фильтр весьма нехилой длины. Да, он уже работает на пониженной частоте. Но по аппаратурной сложности все плюсы CIC-фильтра сходят на нет. Кроме того, CIC страдает просто фантастическом ростом выходной разрядности, поледующее грамотное упихивание оной в заданную - это не такая тривиальная задача, как кажется.

Поэтому, у нас в конторе, например, уже давно от CIC-фильтров отказались - в квадратурных приёмниках производится 2-3-ступенчатое понижение частоты на обычных нерекурсивных фильтрах невысокого порядка. Для современнных мощных и скоростных ПЛИС - это гораздо более экономичное и практичное решение (во всех смыслах).
Go to the top of the page
 
+Quote Post
coding4dsp
сообщение Dec 11 2017, 07:37
Сообщение #5





Группа: Участник
Сообщений: 13
Регистрация: 30-08-17
Пользователь №: 99 040



Kluwert, а какие у вас коэффициенты интерполяции/децимации?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Olga_woroncova   Интерполяция CIC фильтром   Nov 28 2017, 08:28
- - ViKo   А задержка вас не смущает? По-моему, оба эти свойс...   Nov 28 2017, 08:52
|- - thermit   Цитата(quato_a @ Nov 28 2017, 15:26) CIC ...   Nov 28 2017, 12:56
|- - Kluwert   Цитата(coding4dsp @ Dec 11 2017, 10:37) K...   Dec 11 2017, 08:51
|- - coding4dsp   Интересно! Я полагал, что аппаратная реализаци...   Dec 11 2017, 14:25
|- - quato_a   Цитата(Kluwert @ Dec 11 2017, 11:51) Мало...   Dec 11 2017, 16:52
- - litv   Рекомендую почитать http://www.dsplib.ru/content/c...   Nov 28 2017, 10:17
- - Olga_woroncova   Спасибо за ответы! Я так поняла, что амплитуда...   Dec 22 2017, 05:24
|- - quato_a   Цитата(Olga_woroncova @ Dec 22 2017, 08:2...   Dec 22 2017, 08:12
||- - thermit   Цитата(quato_a @ Dec 22 2017, 11:12) У се...   Dec 22 2017, 12:14
||- - quato_a   Цитата(thermit @ Dec 22 2017, 15:14) Что ...   Dec 22 2017, 12:44
|- - Lmx2315   (написал ерунду потому что невнимательно прочитал ...   Dec 22 2017, 08:47
- - Olga_woroncova   Есть ещё вопрос по поводу ФЧХ CIC фильтра. В теори...   Dec 29 2017, 02:39
- - quato_a   Цитата(Olga_woroncova @ Dec 29 2017, 05:3...   Jan 2 2018, 10:15
- - Kluwert   Цитата(quato_a @ Jan 2 2018, 13:15) Пилоо...   Jan 8 2018, 13:47


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th June 2025 - 12:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.01414 секунд с 7
ELECTRONIX ©2004-2016