1. Проект аналогового фильтра Баттерворта (низкочастотный, высокочастотный, полосовой, заграждающий) - реализация MATLAB
1. Проект аналогового фильтра Баттерворта (низкочастотный, высокочастотный, полосовой, заграждающий) - реализация MATLAB

Всем привет, мы снова встретились, я ваш друг Цюаньчжаньцзюнь.

Эта статья об аналоговых фильтрах.дизайн,Если вам нужно знать о цифровых фильтрах,Вы можете прочитать два других блога, которые я написал по порядку.,следующее:

2.MATLAB реализует цифровой фильтр с бесконечной импульсной характеристикой (БИХ).

3. MATLAB реализует цифровой фильтр с конечной импульсной характеристикой (FIR).

Оглавление

1. Введение в базовые знания

Давайте сначала уточним кое-что (это очень важно):

Синусоидальный сигнал частотой 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

2. Введение функции

Сначала представим некоторые используемые функции MATLAB.

2.1 Кнопка – Определите порядок фильтра N и частоту среза 3 д Б wc.

Язык кода:javascript
копировать
[N,wc] = buttord(wp, ws, Rp, As, ‘s’)  

Входные параметры следующие:

Граница полосы пропускания Аналоговая частотаwp、граница стоп-зоны Аналоговая частотаwsАналоговая угловая частота,Единица измерения: рад/с.

Максимальное затухание в полосе пропусканияRp、Минимальное затухание в полосе задерживанияAsЕдиница измерения: д Б.

«s» относится к аналоговому фильтру. При проектировании цифрового фильтра параметр «s» отсутствует.

2.2 масло – Решите конкретные параметры B и A фильтра N-порядка. После решения B и A проектирование фильтра завершено.

Язык кода:javascript
копировать
[B,A] = butter(N, wc, ‘ftype’, ‘s’)  - Аналоговый фильтр

Входные параметры следующие:

N – Порядок фильтра

wc – 3dBКрайний срок Аналоговая частота(Единица измерения рад/с,N и wc рассчитываются с использованием функции Buttord)

ftype – Тип фильтра '': (1)Когда входной сигнал wc является одномерным вектором: по умолчаниюслучайдизайнизнизкий проходфильтр,дизайнКвалкоммфильтризпорядок словftype=high

(2)Когда входной сигнал wc является двумерным вектором [wcl,wcu]: по умолчаниюслучайдизайнизполосовой пропускфильтр,дизайнполосовое сопротивлениефильтризпорядок словftype=stop

2.3 фильтр – функция фильтра

Язык кода:javascript
копировать
y = filter(B,A,x)

Это функция фильтра,

x — входной шумовой сигнал,

B и A — расчетные параметры фильтра.

Полученный выходной сигнал y является отфильтрованным сигналом.

3. Реализация кода:

(1) Фильтр нижних частот:

пример: Спроектируйте фильтр нижних частот Баттерворта с частотой среза полосы пропускания 5 к Гц, затуханием в полосе пропускания 2 д Б, частотой среза полосы задерживания 12 к Гц и затуханием в полосе задерживания 30 д Б.

Как видно из вопроса, конструкция представляет собой аналоговый фильтр, поэтому используются следующие три функции:

Язык кода:javascript
копировать
[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

Код выглядит следующим образом:

Язык кода:javascript
копировать
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 будет отфильтрованным сигналом.

Ниже представлена ​​часть чертежа

Чтобы придать результатам фильтра более наглядное представление,Мы можем нарисовать его амплитудно-частотную характеристику.,Код выглядит следующим образом: Среди них мы использовали функцию частот,

Язык кода:javascript
копировать
h = freqs(B,A,wk)

Он используется для расчета размера соответствующей частотной характеристики h, когда частота равна wk, и в основном используется для рисования изображений.

Рисунок Код выглядит следующим образом:

Язык кода:javascript
копировать
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]);

Результаты розыгрыша следующие:

(2) Фильтр верхних частот:

Фильтр верхних частот практически аналогичен фильтру нижних частот, только обратите внимание. [B,A] = butter(N, wc, ‘ftype’, «с») в ftype=high

пример: Спроектируйте фильтр верхних частот Баттерворта с частотой среза полосы пропускания 4 к Гц, затуханием в полосе пропускания 0,1 д Б, частотой среза полосы задерживания 1 к Гц и затуханием в полосе задерживания 40 д Б.

Код выглядит следующим образом:

Язык кода:javascript
копировать
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 будет отфильтрованным сигналом.

Затем рисуем амплитудно-частотную характеристику фильтра верхних частот

Язык кода:javascript
копировать
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]);

График выглядит следующим образом:

(3) Полосовой фильтр:

пример: Спроектируйте полосовой фильтр Баттерворта с верхними и нижними граничными частотами полосы пропускания, равными 4 к Гц и 7 к Гц соответственно, затуханием в полосе пропускания, равным 1 д Б, верхней и нижней граничными частотами полосы задерживания, равными 2 к Гц и 9 к Гц, и затуханием в полосе задерживания, равным 20 д Б.

фильтрдизайн Код выглядит следующим образом:

Язык кода:javascript
копировать
%полосовой пропуск
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 будет отфильтрованным сигналом.

Затем рисуем амплитудно-частотную характеристику полосового фильтра следующим образом:

Язык кода:javascript
копировать
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) Полосовой фильтр:

пример: Спроектируйте полосовой заграждающий фильтр Баттерворта с верхними и нижними граничными частотами полосы пропускания 2 к Гц и 9 к Гц соответственно, затуханием в полосе пропускания 1 д Б, верхней и нижней граничными частотами полосы задерживания 4 к Гц и 7 к Гц и затуханием в полосе задерживания 20 д Б.

Язык кода:javascript
копировать
%полосовое сопротивление
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 является отфильтрованным сигналом.

Затем рисуем полосовое Амплитудно-частотная характеристика резистивного фильтра, Код выглядит следующим образом:

Язык кода:javascript
копировать
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

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose