"DSP с использованием MATLAB" Проблема 8,4

        Сегодня День защиты детей, а не его семья

Код:

%% ------------------------------------------------ ------------------------ 
%% Выходная информация об этом м-файл 
fprintf ( '\ п ************ *********************************************** \ п» ); 
fprintf ( '<DSP с помощью MATLAB> Проблема 8,4 \ п \ п'); 
баннер(); 
%% ------------------------------------------------ ------------------------ 

цифровой Notch фильтр% 
г = 0,7 
% г = 0,9 
% г = 0,99 
omega0 = р / 2; 

% , Что соответствует системной функции прямой форме 
b0 = 1,0; % Параметр усиления  
Ь = b0 * [1 -2 * сов (omega0) 1]; % Числитель с полюсами
а = [1 -2 * г * соз (omega0) г * г]; % знаменатель

% Точная резонансная частота и полоса пропускания 3dB 
omega_r = экоса ((1 + г * г) * соз (omega0) / (2 * г)); 
delta_omega = 2 * (1-р); 
fprintf ( '\ nNotch Част является:% блок .4fpi, пропускная способность 3dB составляет% .4f \ п', omega_r / пи, delta_omega); 
% 

[ДБ, МАГ, PHA, GRD, ш] = freqz_m (Ь, а); 
[db_b, mag_b, pha_b, grd_b, ш] = freqz_m (б, 1); 

% ------------------------------------------------- -------------------- 
% Выберите параметр усиления фильтра, максимальный коэффициент усиления равен 1 
% -------------- -------------------------------------------------- ----- 
GAIN1 = макс (МАГ)% с полюсами 
Gain2 = макс (mag_b)% без полюсов 

[дБ, MAG, PHA, GRD, ш] = freqz_m (б / GAIN1, а);
[db_b, mag_b, pha_b, grd_b, ш] = freqz_m (B / Gain2, 1); 

фигура ( «NumberTitle», «выключено», «Имя», «Проблема +8,4 фильтр Notch с полюсами») 
набор (ГКМ, «Цвет», «белый»); 

подзаговор (2,2,1); участок (ш / р, дБ); Сетка на; Ось ([0 2 -60 10]); 
Набор (GCA, 'YTickMode', 'ручное', 'YTick', [- 60, -30,0]) 
множество (GCA, 'YTickLabelMode', 'ручное', 'YTickLabel', [ '60' '; 30' ;»0' ]); 
Набор (GCA, 'XTickMode', 'ручного', 'XTick', [0,0.5,1,1.5,2]); 
xlabel ( 'частота в единицах \ Pi'); ylabel ( 'Децибелы'); Название ( «Величина отклика в дБ»); 

подзаговор (2,2,3); участок (ш / р, МАГ); Сетка на; % оси ([0 1 -100 10]); 
xlabel ( 'частота в единицах \ Pi'); ylabel ( 'Абсолют'); Название ( «Величина отклика в абсолютном»); 
Набор (GCA, 'XTickMode', 'ручного', 'XTick', [0,0.5,1,1.5,2]); 
Набор (GCA, 'YTickMode', 'ручного', 'YTick', [0,1.0]); 

подзаговор (2,2,2); участок (ш / р, ФГ); Сетка на; % оси ([0 1 -100 10]); 
xlabel ( 'частота в единицах \ Pi'); ylabel ( 'Rad'); Название ( «Фаза отклика в радианах»); 

подзаговор (2,2,4); участок (ш / р, GRD * пи / 180); Сетка на; % оси ([0 1 -100 10]); 
xlabel ( 'частота в единицах \ Pi'); ylabel ( 'Rad'); название ( 'Group Delay'); 
Набор (GCA, 'XTickMode', 'ручного', 'XTick', [0,0.5,1,1.5,2]); 
% комплект (GCA, 'YTickMode', 'ручного', 'YTick', [0,1.0]); 


фигура ( «NumberTitle», «выключено», «Имя», «Проблема фильтр 8,4 Notch без полюсов» 
) Набор (РГС, 'Цвет', 'белый'); 

подзаговор (2,2,1); участок (ш / р, db_b); Сетка на; Ось ([0 2 -60 10]);
Набор (GCA, 'YTickMode', 'ручное', 'YTick', [- 60, -30,0])Сетка на; % Оси ([0 1 -100 10]); 
Набор (GCA, 'YTickLabelMode', 'ручное', 'YTickLabel', [ '60', '30',»0' ]); 
Набор (GCA, 'XTickMode', 'ручного', 'XTick', [0,0.25,0.5,1,1.5,1.75]); 
xlabel ( 'частота в единицах \ Pi'); ylabel ( 'Децибелы'); Название ( «Величина отклика в дБ»); 

подзаговор (2,2,3); участок (ш / р, mag_b); Сетка на; % оси ([0 1 -100 10]); 
xlabel ( 'частота в единицах \ Pi'); ylabel ( 'Абсолют'); Название ( «Величина отклика в абсолютном»); 
Набор (GCA, 'XTickMode', 'ручного', 'XTick', [0,0.5,1,1.5,2]); 
Набор (GCA, 'YTickMode', 'ручного', 'YTick', [0,1.0]); 

подзаговор (2,2,2); участок (ш / р, pha_b); Сетка на; % оси ([0 1 -100 10]); 
xlabel ( 'частота в единицах \ Pi'); ylabel ( 'Rad'); Название ( «Фаза отклика в радианах»); 

подзаговор (2,2,4); участок (ш / р, grd_b * пи / 180); Сетка на; % оси ([0 1 -100 10]);
xlabel ( 'частота в единицах \ Pi'); ylabel ( 'Rad'); название ( 'Group Delay'); 
Набор (GCA, 'XTickMode', 'ручного', 'XTick', [0,0.5,1,1.5,2]); 
% комплект (GCA, 'YTickMode', 'ручного', 'YTick', [0,1.0]); 


фигура ( «NumberTitle», «фильтр Проблема 8,4 Notch с и без палок», «от» «Name»,) 
набор (ГКМ, «Цвет», «белый»); 

подзаговор (2,1,1); участок (ш / пи, дб, 'r--'); Сетка на; Ось ([0 2 -60 10]); Оставайтесь на линии; 
участок (ш / р, db_b); Сетка на; Ось ([0 2 -60 10]); откладывать; 
Набор (GCA, 'YTickMode', 'ручное', 'YTick', [- 60, -30,0]) 
множество (GCA, 'YTickLabelMode', 'ручное', 'YTickLabel', [ '60' '; 30' ;»0' ]); 
набор (GCA, 'XTickMode', 'ручного', 'XTick', [0,0.5,1,1.5,2]); 
xlabel ( 'частота в единицах \ Pi'); ylabel ( 'Децибелы'); Название ( «Величина отклика в дБ»);

подзаговор (2,1,2); участок (ш / р, PHA, 'r--'); Сетка на; держаться;% оси ([0 1 -100 10]); 
участок (ш / р, pha_b); откладывать; 
xlabel ( 'частота в единицах \ Pi'); ylabel ( 'Rad'); Название ( «Фаза отклика в радианах»); 


фигура ( 'NumberTitle', 'выключено', 'Имя', 'Проблема 8,4 Pole-Zero земля') 
набор (РГС, 'Цвет', 'белый'); 
Zplane (Ь, а); 
Название (Sprintf ( 'полюс-ноль земля, г =% 2f \\ омега = 2f% \\ пи.., г, omega0 / пи)); 
% pzplotz (Ь, а); 

фигура ( 'NumberTitle', 'выключено', 'Имя', 'Проблема 8,4 Pole-Zero земля') 
набор (РГС, 'Цвет', 'белый'); 
Zplane (б, 1); 
Название (Sprintf ( 'полюс-ноль земля, г =% 2f \\ омега = 2f% \\ пи.., г, omega0 / пи)); 
% pzplotz (Ь, а); 


% Импульсная характеристика 
fprintf ( '\ п ----------------------------------');
fprintf ( '\ метод расширения nPartial фракции: \ п'); 
B = B / GAIN1; 
[R, р, с] = residuez (Ь, а) 
MR = (абс (R)) '% Остаток Величина 
AR = (угол (R))' / пи углы% остатка в пи единицах 
Мр = (абс (р) ) '% полюса Величина 
Ар = (угол (р))' / пи углы% полюса в единицах пи 
[дельта, п] = impseq (0,0,50); 
h_chk = фильтр (Ь, а, дельта); % Проверить последовательности 

% ---------------------------------------------- -------------------------- 
% параметр усиления b0 = 1 
% ----------------- -------------------------------------------------- ----- 
. ч = -0,5204 * (. 0,7 ^ п) * (2 * соз (р * п / 2)) + 2,0408 * дельта; % Г = 0,7
.% ч = -0,1173 * (. 0,9 ^ п) * (2 * соз (р * п / 2)) + 1,2346 * дельта; % Г = 0,9 
.% Ч = -0,0102 * (. 0,99 ^ п) * (2 * соз (р * п / 2)) + 1,0203 * дельта; % Г = 0,99 
% --------------------------------------------- --------------------------- 

% ---------------------- -------------------------------------------------- 
% параметр усиления b0 = уравнение 
% ------------------------------------------- ----------------------------- 
% ч = -0,3877 * (0.7. ^ п). * (2 * соз (пи * п / 2)) + 1,5204 * дельта; % Г = 0,7 
.% Ч = -0,1173 * (. 0,9 ^ п) * (2 * соз (р * п / 2)) + 1,2346 * дельта; % Г = 0,9 
.% Ч = -0,0102 * (. 0,99 ^ п) * (2 * соз (р * п / 2)) + 1,0203 * дельта; % Г = 0,99 
% --------------------------------------------- ---------------------------

фигура ( 'NumberTitle', 'выключено', 'Имя', 'Задача 8.4 Фильтр Паз, ч (п) фильтром и INV-Z ') 
набора (ГКМ,' Цвет', 'белый'); 

подзаговор (2,1,1); Шток (п, h_chk); Сетка на; % оси ([0 2 -60 10]); 
xlabel ( 'п'); ylabel ( 'ч \ _chk'); Название ( «Импульсные последовательности отклика фильтра на»); 

подзаговор (2,1,2); Шток (п, ч / GAIN1); Сетка на; % оси ([0 1 -100 10]); 
xlabel ( 'п'); ylabel ( 'Н'); Название ( 'Импульсные последовательности отклика по Inv-Z'); 


[дБ, МАГ, PHA, GRD, ш] = freqz_m (ч / GAIN1, [1]); 


фигура ( 'NumberTitle', 'выключено', 'Имя', 'Задача 8.4 Фильтр Паз, ч (п) Inv-Z ') 
набора (ГКМ,' Цвет', 'белый'); 

подзаговор (2,2,1); участок (ш / р, дБ); Сетка на; Ось ([0 2 -60 10]); 
набор (GCA, 'YTickMode', 'ручной', 'YTick', [- 60, -30,0])
Набор (GCA, 'YTickLabelMode', 'ручное', 'YTickLabel', [ '60', '30',»0' ]); 
Набор (GCA, 'XTickMode', 'ручного', 'XTick', [0,0.5,1,1.5,2]); 
xlabel ( 'частота в единицах \ Pi'); ylabel ( 'Децибелы'); Название ( «Величина отклика в дБ»); 

подзаговор (2,2,3); участок (ш / р, МАГ); Сетка на; % оси ([0 1 -100 10]); 
xlabel ( 'частота в единицах \ Pi'); ylabel ( 'Абсолют'); Название ( «Величина отклика в абсолютном»); 
Набор (GCA, 'XTickMode', 'ручного', 'XTick', [0,0.5,1,1.5,2]); 
Набор (GCA, 'YTickMode', 'ручного', 'YTick', [0,1.0]); 

подзаговор (2,2,2); участок (ш / р, ФГ); Сетка на; % оси ([0 1 -100 10]); 
xlabel ( 'частота в единицах \ Pi'); ylabel (» Rad '); Название ( «Фаза отклика в радианах»); 

подзаговор (2,2,4); участок (ш / р, GRD * пи / 180); Сетка на; % оси ([0 1 -100 10]);
xlabel ( 'частота в единицах \ Pi'); ylabel ( 'Rad'); название ( 'Group Delay'); 
Набор (GCA, 'XTickMode', 'ручного', 'XTick', [0,0.5,1,1.5,2]); 
% комплект (GCA, 'YTickMode', 'ручного', 'YTick', [0,1.0]); 


% С учетом resonat частоты и полосы пропускания 3dB 
delta_omega = 0,04; 
omega_r = пи * 0,5; 

г = 1 - delta_omega / 2

  Результат:

        Фильтр Notch, ω0 = 0.5π, введение полюсов г = 0,7

        Функции системы частичного расширения фракции

        Система, как на фиг полюса нуля

         Амплитудный спектр, фазовый спектр, групповая задержка

        Нулевой находится в исходном положении, соответствующем удалить нуль, как следует

        После удаления нуля, амплитуда спектра спектра режекторный фильтра, фазовой и групповой задержки

        С введением нуля, вблизи полосы частот надреза уже (красный), синий является случай, когда не равна нулю. Как сказано в книге, частота ω0 вырезы

И небольшая разница.

        Результаты полюса формы г = 0,9 и 0,99, трюм здесь.

рекомендация

отwww.cnblogs.com/ky027wh-sx/p/10960646.html
рекомендация