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

 
 
 
Reply to this topicStart new topic
> АЧХ -каскада фильтров, Как в Matlab построить результирующую АЧХ.
PavPro
сообщение Apr 25 2016, 09:11
Сообщение #1


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

Группа: Участник
Сообщений: 127
Регистрация: 24-02-11
Пользователь №: 63 222



Добрый день. Возник следующий вопрос:
Имеется два фильтра: 1)Стандартный КИХ-дециматор. И фильтр Приподнятого косинуса.
Собственно вопрос заключается в том, как построить АЧХ каскадного соединения этих двух фильтров.
Конструкция для каскадного соединения КИХ-фильтров типа такой:

% Расчет КИХ-фильтра дециматора.
Fs2 = 240e3; % Частота входных выборок
Fpass2 = 15e3;
Fstop2 = 20e3;
Rp2 = 0.1;
Astop2 = 60;
M = 5;
FIRdecim = fdesign.decimator(M, 'lowpass', Fpass2, Fstop2, Rp2, Astop2, Fs2);

FC2 = design(FIRdecim);

hRxFilt = comm.RaisedCosineReceiveFilter('RolloffFactor',0.5, 'InputSamplesPerSymbol',8, ...
'DecimationFactor',8);

FC3 = design(hRxFilt);

увы не работает. Ошибка в следующей строке: FC3 = design(hRxFilt);

Оно в общем то и понятно из-за чего. А как сделать по другому, никак не соображу.
Заранее спасибо.
Go to the top of the page
 
+Quote Post
litv
сообщение Apr 25 2016, 09:20
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 401
Регистрация: 6-10-04
Из: Воронеж
Пользователь №: 806



http://www.mathworks.com/help/dsp/ref/dsp....ghlight=cascade
http://www.mathworks.com/help/signal/ref/dfilt.cascade.html
http://www.mathworks.com/help/dsp/ref/mfilt.cascade.html
Go to the top of the page
 
+Quote Post
PavPro
сообщение Apr 25 2016, 09:29
Сообщение #3


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

Группа: Участник
Сообщений: 127
Регистрация: 24-02-11
Пользователь №: 63 222



Цитата(litv @ Apr 25 2016, 12:20) *

Дело в том, что если я все правильно понял конструкция cascade работает только для фильтров входящих в библиотеку функций Multirate and Multistage Filters.
Фильтр приподнятого косинуса туда не входит. В этом то и проблема. Может есть у кого пример описания каскадного соединения применительно к данному фильтру.
Go to the top of the page
 
+Quote Post
petrov
сообщение Apr 25 2016, 10:33
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 220
Регистрация: 21-10-04
Из: Balakhna
Пользователь №: 937



Цитата(PavPro @ Apr 25 2016, 12:11) *
Добрый день. Возник следующий вопрос:
Имеется два фильтра: 1)Стандартный КИХ-дециматор. И фильтр Приподнятого косинуса.
Собственно вопрос заключается в том, как построить АЧХ каскадного соединения этих двух фильтров.


Выкидываете дециматор из КИХ, между коэффициентами приподнятого косинуса вставляете нули в соответствии с коэффициентом децимации, полученные фильтры каскадно соединяете и подаёте дельта-импульс, строите АЧХ полученной ИХ.
Go to the top of the page
 
+Quote Post
PavPro
сообщение Apr 25 2016, 11:28
Сообщение #5


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

Группа: Участник
Сообщений: 127
Регистрация: 24-02-11
Пользователь №: 63 222



Цитата(petrov @ Apr 25 2016, 13:33) *
Выкидываете дециматор из КИХ, между коэффициентами приподнятого косинуса вставляете нули в соответствии с коэффициентом децимации, полученные фильтры каскадно соединяете и подаёте дельта-импульс, строите АЧХ полученной ИХ.

Спасибо попробую.

Собственно нашел пример как описывать подобного рода штуки.
Может как и мне, кому-ни-ть бригодится.

RRC_rolloff = 0.22; % RRC rolloff factor
RRC_order = 34; % RRC order is one less than the filter length.
RRC_L_factor = 4; % interpolate by this number in the RRC

% create a SQUARE ROOT RAISED COSINE filter based on the above parameters.
dRRC = fdesign.pulseshaping(RRC_L_factor,'Square Root Raised Cosine','N,Beta',RRC_order,RRC_rolloff);
hRRCtemp = design(dRRC);
hRRC = mfilt.firinterp(RRC_L_factor, hRRCtemp.Numerator);

%---------------------------------------------------------------
% CIC COMPENSATION (CFIR) SECTION
% (Note: some parameters belong to the CIC being compensated.)
%---------------------------------------------------------------

CFIR_L_factor = 2; % interpolation factor of CFIR
CIC_D = 1; % differential delay of CIC
CIC_N = 5; % number of stages in CIC
CIC_R = 8; % interpolation factor of CIC
CFIR_Fp = 1e6; % passband edge frequency of CFIR
CFIR_Fst = 2e6; % stopband edge frequency of CFIR
CFIR_Ap = 0.2; % passband ripple of CFIR (in dB)
CFIR_Ast = 80; % stopband attenuation of CFIR (in dB)
CFIR_Fs = 12.5e6; % OUTPUT (interpolated) sampling frequency of CFIR

% create a CIC COMPENSATION FILTER based on the above parameters
dCFIR = fdesign.interpolator(CFIR_L_factor,'ciccomp', CIC_D, CIC_N, CIC_R, ...
'Fp,Fst,Ap,Ast', ...
CFIR_Fp, CFIR_Fst, CFIR_Ap, CFIR_Ast, CFIR_Fs);
hCFIR = design(dCFIR,'equiripple');

% create a CFIR SCALING FACTOR OBJECT
% (NOTE: the coefficients are scaled to prevent loss of signal power due to
% insertion of zero samples - this requires correction for convenient
% plotting of the spectrum.)
K_cfir = 1/CFIR_L_factor; % gain compensation value
hKcfir = dfilt.scalar(K_cfir);

%--------------
% CIC SECTION
%--------------

CIC_Fs = 100e6; % OUTPUT (interpolated) sampling frequency of CIC
CIC_iwl = 10; % CIC input

% create a CIC filter object
hCIC = mfilt.cicinterp(CIC_R, CIC_D, CIC_N);%, 10, CIC_Fs);

% create a CIC scaling factor object
K_cic = 1/(CIC_R^CIC_N); % gain compensation value
hK = dfilt.scalar(K_cic);

%------------------
% CASCADE SECTION
%------------------

% create a cascade of the objects
hCIChK = mfilt.cascade(hCIC,hK); % CIC with scaling applied
hCFIRhKcfir = mfilt.cascade(hCFIR,hKcfir); % CFIR with scaling applied
hCASC = mfilt.cascade(hRRC,hCFIR,hKcfir,hCIC,hK); % cascade of all filters and scalings

Код для примера.
Всем спасибо.
Go to the top of the page
 
+Quote Post

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

 


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


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