Всем привет, мы снова встретились, я ваш друг Цюаньчжаньцзюнь.
Эта статья об аналоговых фильтрах.дизайн,Если вам нужно знать о цифровых фильтрах,Вы можете прочитать два других блога, которые я написал по порядку.,следующее:
2.MATLAB реализует цифровой фильтр с бесконечной импульсной характеристикой (БИХ).
3. MATLAB реализует цифровой фильтр с конечной импульсной характеристикой (FIR).
Давайте сначала уточним кое-что (это очень важно):
Синусоидальный сигнал частотой 50Гц. Это означает Аналоговая частота сигнала f f f= 50 (Hz),Обратите внимание, что его единица измерения — Гц.
Выражение сигнала y знак равно s я п ( 2 π ж т ) знак равно s я п ( 2 π * 50 т ) знак равно s я п ( 100 π т ) y знак равно грех (2 \ пи фут) = грех (2 \ пи *50 т) = грех (100 \ пи т) ) y=sin(2πft)=sin(2π*50t)=sin(100πt)
Поскольку сигнал также можно выразить в виде y = s i n ( Ω t ) y = sin(\Omega t) y=sin(Ωt), поэтому здесь Ω = 2 π f = 100 π \Omega=2\pi f=100\pi Ω=2πf=100π
Вот Ω \Omega Ω даАналоговая угловая частота,Его единица измерения — рад/с.。
УведомлениеАналоговая угловая частота Ω \Omega Ω иАналоговая частота f f отношения Ω = 2 π f \Omega=2\pi f Ω=2πf
Сначала представим некоторые используемые функции MATLAB.
[N,wc] = buttord(wp, ws, Rp, As, ‘s’)
Входные параметры следующие:
Граница полосы пропускания Аналоговая частотаwp、граница стоп-зоны Аналоговая частотаws(Аналоговая угловая частота,Единица измерения: рад/с.)
Максимальное затухание в полосе пропусканияRp、Минимальное затухание в полосе задерживанияAs(Единица измерения: д Б.)
«s» относится к аналоговому фильтру. При проектировании цифрового фильтра параметр «s» отсутствует.
[B,A] = butter(N, wc, ‘ftype’, ‘s’) - Аналоговый фильтр
Входные параметры следующие:
N – Порядок фильтра
wc – 3dBКрайний срок Аналоговая частота(Единица измерения рад/с,N и wc рассчитываются с использованием функции Buttord)
ftype – Тип фильтра '': (1)Когда входной сигнал wc является одномерным вектором: по умолчаниюслучайдизайнизнизкий проходфильтр,дизайнКвалкоммфильтризпорядок словftype=high
(2)Когда входной сигнал wc является двумерным вектором [wcl,wcu]: по умолчаниюслучайдизайнизполосовой пропускфильтр,дизайнполосовое сопротивлениефильтризпорядок словftype=stop
y = filter(B,A,x)
Это функция фильтра,
x — входной шумовой сигнал,
B и A — расчетные параметры фильтра.
Полученный выходной сигнал y является отфильтрованным сигналом.
пример: Спроектируйте фильтр нижних частот Баттерворта с частотой среза полосы пропускания 5 к Гц, затуханием в полосе пропускания 2 д Б, частотой среза полосы задерживания 12 к Гц и затуханием в полосе задерживания 30 д Б.
Как видно из вопроса, конструкция представляет собой аналоговый фильтр, поэтому используются следующие три функции:
[N,wc] = buttord(wp, ws, Rp, As, ‘s’)
[B,A] = butter(N, wc, ‘ftype’, ‘s’)
y = filter(B,A,x)
Сосредоточиться на ! ! !:
Все частоты аналоговых фильтров являются аналоговыми угловыми частотами. Ω \Omega Ω , оно и частота f f f отношение Ω = 2 π f \Omega = 2\pi f Ω=2πf
Итак, здесь
wp = 2 ∗ p i ∗ 5000 2*pi*5000 2∗pi∗5000,ws = 2 ∗ p i ∗ 12000 2*pi*12000 2∗pi∗12000,Rp = 2, As = 30
Код выглядит следующим образом:
wp = 2 * pi * 5000;
ws = 2 * pi * 12000;
Rp = 2;
As = 30;
[N, wc] = buttord(wp, ws, Rp, As, 's');
[B, A] = butter(N, wc, 's');
Приведенные выше коды проектируют фильтр.
Если имеется входной шумовой сигнал x, вызовите y = filter(B,A,x), и полученный сигнал y будет отфильтрованным сигналом.
Ниже представлена часть чертежа
Чтобы придать результатам фильтра более наглядное представление,Мы можем нарисовать его амплитудно-частотную характеристику.,Код выглядит следующим образом: Среди них мы использовали функцию частот,
h = freqs(B,A,wk)
Он используется для расчета размера соответствующей частотной характеристики h, когда частота равна wk, и в основном используется для рисования изображений.
Рисунок Код выглядит следующим образом:
f = 0 : 10 : 14000;% снимает очки, от 0 до 14000, беря по очку каждые 10
w = 2 * pi * f;% Обратите внимание, что все частоты, используемые в аналоговых фильтрах, являются аналоговыми. угловая частота, умноженная на 2pi
Hk = freqs(B,A,w);%Для каждой взятой точки найдите там частотную характеристику.
%Рисовать
figure
plot(f/1000, 20 * log10(abs(Hk)));%Единица измерения по абсциссе – к Гц, по ординате – Единица. измерения: д Б.,
grid on;
%Установите метки горизонтальных и вертикальных координат
xlabel('f/kHz');
ylabel('-A(f)/dB');
%Установить диапазон горизонтальных и вертикальных осей координат
axis([0, 14, -40, 5]);
Результаты розыгрыша следующие:
Фильтр верхних частот практически аналогичен фильтру нижних частот, только обратите внимание. [B,A] = butter(N, wc, ‘ftype’, «с») в ftype=high
пример: Спроектируйте фильтр верхних частот Баттерворта с частотой среза полосы пропускания 4 к Гц, затуханием в полосе пропускания 0,1 д Б, частотой среза полосы задерживания 1 к Гц и затуханием в полосе задерживания 40 д Б.
Код выглядит следующим образом:
wp = 2 * pi * 4000;
ws = 2 * pi * 1000;
Rp = 0.1;
As = 40;
[N, wc] = buttord(wp, ws, Rp, As, 's');
[B, A] = butter(N, wc,'high', 's');%Обратите внимание на этот "высокий"
Завершена разработка фильтра верхних частот.
Если есть входной шумовой сигнал x, вызовите y = filter(B,A,x), и полученный y будет отфильтрованным сигналом.
Затем рисуем амплитудно-частотную характеристику фильтра верхних частот
f = 0 : 10 : 14000;% снимает очки, от 0 до 14000, беря по очку каждые 10
w = 2 * pi * f;% Обратите внимание, что все частоты, используемые в аналоговых фильтрах, являются аналоговыми. угловая частота, умноженная на 2pi
Hk = freqs(B,A,w);%Для каждой взятой точки найдите там частотную характеристику.
%Рисовать
figure
plot(f/1000, 20 * log10(abs(Hk)));%Единица измерения по абсциссе – к Гц, по ординате – Единица. измерения: д Б.,
grid on;
%Установите метки горизонтальных и вертикальных координат
xlabel('f/kHz');
ylabel('-A(f)/dB');
%Установить диапазон горизонтальных и вертикальных осей координат
axis([0, 14, -60, 5]);
График выглядит следующим образом:
пример: Спроектируйте полосовой фильтр Баттерворта с верхними и нижними граничными частотами полосы пропускания, равными 4 к Гц и 7 к Гц соответственно, затуханием в полосе пропускания, равным 1 д Б, верхней и нижней граничными частотами полосы задерживания, равными 2 к Гц и 9 к Гц, и затуханием в полосе задерживания, равным 20 д Б.
фильтрдизайн Код выглядит следующим образом:
%полосовой пропуск
wp = 2 * pi * [4000, 7000];
ws = 2 * pi * [2000,9000];
Rp = 1;
As = 20;
[N, wc] = buttord(wp, ws, Rp, As, 's');%В этот момент входные данные wp и ws являются двумерными, а выходные данные wc также являются двумерными.
[B, A] = butter(N, wc,'s');
Завершена разработка полосового аналогового фильтра.
Если имеется входной шумовой сигнал x, вызовите y = filter(B,A,x), и полученный сигнал y будет отфильтрованным сигналом.
Затем рисуем амплитудно-частотную характеристику полосового фильтра следующим образом:
f = 0 : 10 : 14000;% снимает очки, от 0 до 14000, беря по очку каждые 10
w = 2 * pi * f;% Обратите внимание, что все частоты, используемые в аналоговых фильтрах, являются аналоговыми. угловая частота, умноженная на 2pi
Hk = freqs(B,A,w);%Для каждой взятой точки найдите там частотную характеристику.
%Рисовать
figure
plot(f/1000, 20 * log10(abs(Hk)));%Единица измерения по абсциссе – к Гц, по ординате – Единица. измерения: д Б.,
grid on;
%Установите метки горизонтальных и вертикальных координат
xlabel('f/kHz');
ylabel('-A(f)/dB');
%Установить диапазон горизонтальных и вертикальных осей координат
axis([0, 14, -60, 5]);
График выглядит следующим образом:
пример: Спроектируйте полосовой заграждающий фильтр Баттерворта с верхними и нижними граничными частотами полосы пропускания 2 к Гц и 9 к Гц соответственно, затуханием в полосе пропускания 1 д Б, верхней и нижней граничными частотами полосы задерживания 4 к Гц и 7 к Гц и затуханием в полосе задерживания 20 д Б.
%полосовое сопротивление
wp = 2 * pi * [2000, 9000];
ws = 2 * pi * [4000,7000];
Rp = 1;
As = 20;
[N, wc] = buttord(wp, ws, Rp, As, 's');%В этот момент входные данные wp и ws являются двумерными, а выходные данные wc также являются двумерными.
[B, A] = butter(N, wc,'stop','s');
полосовое Разработка резисторного аналогового фильтра завершена, если есть входной шумовой сигнал x, вызовите
y = filter(B,A,x), полученное значение y является отфильтрованным сигналом.
Затем рисуем полосовое Амплитудно-частотная характеристика резистивного фильтра, Код выглядит следующим образом:
f = 0 : 10 : 14000;% снимает очки, от 0 до 14000, беря по очку каждые 10
w = 2 * pi * f;% Обратите внимание, что все частоты, используемые в аналоговых фильтрах, являются аналоговыми. угловая частота, умноженная на 2pi
Hk = freqs(B,A,w);%Для каждой взятой точки найдите там частотную характеристику.
%Рисовать
figure
plot(f/1000, 20 * log10(abs(Hk)));%Единица измерения по абсциссе – к Гц, по ординате – Единица. измерения: д Б.,
grid on;
%Установите метки горизонтальных и вертикальных координат
xlabel('f/kHz');
ylabel('-A(f)/dB');
%Установить диапазон горизонтальных и вертикальных осей координат
axis([0, 14, -100, 5]);
Результат следующий:
Издатель: Лидер стека программистов полного стека, укажите источник для перепечатки: https://javaforall.cn/145891.html Исходная ссылка: https://javaforall.cn