|
Интерполяция CIC фильтром |
|
|
|
Nov 28 2017, 08:28
|
Группа: Новичок
Сообщений: 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()'})
Эскизы прикрепленных изображений
|
|
|
|
|
 |
Ответов
|
Nov 28 2017, 08:59
|
Группа: Участник
Сообщений: 13
Регистрация: 30-08-17
Пользователь №: 99 040

|
Добрый день!
Во-первых, судя по АЧХ синус попадает на наклон, где сигнал претерпевает ослабление. Во-вторых, ваш фильтр не стабилен! Посмотрите на сигнал, при L = 50000;
На CIC не очень похоже - CIC это FIR фильтр, а у вас IIR.
|
|
|
|
|
Nov 28 2017, 12:26
|

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

|
Цитата(coding4dsp @ Nov 28 2017, 11:59)  На CIC не очень похоже - CIC это FIR фильтр, а у вас IIR. CIC - это FIR (КИХ) ?
--------------------
Суббота начинается в понедельник
|
|
|
|
|
Dec 9 2017, 18:40
|
Местный
  
Группа: Участник
Сообщений: 239
Регистрация: 15-11-09
Из: Санкт-Петербург
Пользователь №: 53 639

|
Цитата(quato_a @ Nov 28 2017, 15:26)  CIC - это FIR (КИХ) ? По-сути, CIC (фильтр Хогенауэра) - это совершенно тупой (нерекурсивный изначально) фильтр скользящего среднего. Заслуга Хогенауэра (можно легко найти его статью в Инете), что, используя формулы бинома Ньютона, он представил его в виде рекурсивного фильтра. Мало того, при конечной разрядности, он использует сумматоры с циклическим перполнением, у которых ещё и переменная разрядность как функция номера секции. Во времена, когда ещё даже не сущестовало даже БМК (и, тем более, ПЛИС) - это было великим делом. Но у CIC-фильтров есть один существенный недостаток: легко прикинуть, что, т.к. он равноценен некому фильтру СС, то его АЧХ будет типа sinc(f), что приводит к дикой неравномерности АЧХ в полосе пропускания. Как правило этот фильтр используется в квадратурных приёмниках и если допустимо, что бы частота оцифровки квадратур была заметно больше полуширины полосы сигнала, то - можно с этим жить. Но, как правило, это не позволительная роскошь. А тогда, на выходе этого фильтра приходится примастрячивать компенсирующей фильтр весьма нехилой длины. Да, он уже работает на пониженной частоте. Но по аппаратурной сложности все плюсы CIC-фильтра сходят на нет. Кроме того, CIC страдает просто фантастическом ростом выходной разрядности, поледующее грамотное упихивание оной в заданную - это не такая тривиальная задача, как кажется. Поэтому, у нас в конторе, например, уже давно от CIC-фильтров отказались - в квадратурных приёмниках производится 2-3-ступенчатое понижение частоты на обычных нерекурсивных фильтрах невысокого порядка. Для современнных мощных и скоростных ПЛИС - это гораздо более экономичное и практичное решение (во всех смыслах).
|
|
|
|
|
Dec 11 2017, 07:37
|
Группа: Участник
Сообщений: 13
Регистрация: 30-08-17
Пользователь №: 99 040

|
Kluwert, а какие у вас коэффициенты интерполяции/децимации?
|
|
|
|
Сообщений в этой теме
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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|