Сегодня День защиты детей, а не его семья
Код:
%% ------------------------------------------------ ------------------------ %% Выходная информация об этом м-файл 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, трюм здесь.