- •1. Общая характеристика цифровых фильтров
- •1.1. Свойства цифровых фильтров
- •1.2. Представление цифрового фильтра в виде разностного уравнения
- •2. Ких-фильтры. Методы синтеза
- •2.1. Прямоугольное окно
- •2.2. Обобщенное окно Хэмминга
- •2.3. Окно Блэкмана
- •2.4. Окно Кайзера
- •3. Бих-фильтры. Методы синтеза
- •3.1. Аналоговые фильтры-прототипы
- •3.1.1. Фильтры Баттерворта
- •3.1.2. Фильтры Чебышева
- •3.1.3. Эллиптические фильтры
- •3.1.4. Фильтры Бесселя
- •3.2. Методы дискретизации аналогового фильтра
- •3.2.1. Метод инвариантного преобразования импульсной характеристики
- •3.2.2. Метод билинейного преобразования
- •3.3. Преобразования полосы частот для аналоговых фильтров
- •3.4. Преобразование полосы для цифровых фильтров
- •4. Методы реализации цифровых фильтров
- •4.1. Прямая форма
- •4.2. Прямая каноническая форма
- •4.3. Каскадная форма
- •4.4. Параллельная форма
- •5. Работа в среде matlab
- •5.1. Ввод матриц
- •5.2. Матричные операции
- •5.3. Операторы, выражения и переменные
- •5.4. Функции построения матриц
- •5.5. Операторы for, while, if
- •5.6. Скалярные функции
- •5.7. Векторные функции
- •5.8. Mатричные функции
- •5.9. Подматрицы и форма записи с двоеточием
- •5.10. M-файлы
- •5.11. Текстовые строки, сообщения об ошибках, ввод данных
- •5.12. Сравнение эффективности алгоритмов
- •5.13. Формат вывода
- •5.14. Протокол
- •5.15. Графика
- •6. Записная книжка matlab для Microsoft Word
- •6.1. Начало работы
- •6.2. Краткий пример использования Записной книжки
- •7. Проектирование цифровых фильтров в среде matlab
- •Filtic – cоздание начального состояния для функции filter:
- •Freqs – частотная характеристика аналогового фильтра:
- •Freqspace – формирование последовательности отсчетов частоты:
- •Freqz – частотная характеристика цифрового фильтра.
- •Grpdelay – групповая задержка цифрового фильтра:
- •Impz – импульсный отклик цифрового фильтра:
- •Unwrap – корректировка фазовых углов:
- •Zplane – отображение нулей и полюсов цифрового фильтра:
- •7.2. Проектирование цифровых бих-фильтров besself – проектирование аналогового фильтра Бесселя:
- •Butter – проектирование цифрового и аналогового фильтров Баттерворта:
- •Cheby1 – проектирование цифрового и аналогового фильтров Чебышева – первого типа:
- •Cheby2 – проектирование цифрового и аналогового фильтров Чебышева второго типа:
- •Ellip – проектирование эллиптического цифрового и аналогового фильтров:
- •Yulewalk – проектирование рекурсивного фильтра с использованием метода наименьших квадратов по заданной амплитудно-частотной характеристике:
- •7.3. Выбор порядка бих-фильтра buttord – выбор порядка фильтра Баттерворта:
- •Cheb1ord – выбор порядка для фильтра Чебышева первого порядка:
- •Cheb2ord– выбор порядка для фильтра Чебышева первого порядка:
- •Ellipord – выбор порядка эллиптического фильтра:
- •7.4. Проектирование ких-фильтров fir1 – фильтр fir проектируется с использованием метода окна:
- •Fir2– проектирование фильтра fir с использованием оконного метода для произвольной формы фильтра:
- •Firls – проектирование ких-фильтра с использованием минимизации ошибок методом наименьших квадратов (мнк):
- •Intfilt – расчет интерполирующего ких-фильтра:
- •Remez – синтез оптимального fir-фильтра с равномерной (чебышевской) аппроксимацией на основе алгоритма Паркса – Мак-Клелана:
- •7.5. Преобразования czt–z-преобразование по спиральному контуру:
- •Dct– дискретное косинусное преобразование:
- •Impinvar – метод инвариантной импульсной характеристики для перевода аналогового фильтра в цифровой:
- •8. Примеры проектирования цифровых фильтров
- •8.1. Генерация входной последовательности сигнала
- •8.2. Реализация спектрального анализа с использованием бпф
- •8.3. Синтез цифрового ких-фильтра
- •8.4. Реализация цифровой фильтрации
- •Список литературы
- •Содержание
- •197376, С.-Петербург, ул. Проф. Попова, 5
5.6. Скалярные функции
Определенные функции выполняются над скалярами, а в применении к матрицам – поэлементно. Наиболее общие из этих функций:
sin |
asin |
exp |
abs |
round |
cos |
acos |
log (натуральный) |
sqrt |
floor |
tan |
atan |
rem (остаток) |
sign |
ceil |
5.7. Векторные функции
В MATLAB существуют функции, которые выполняются над векторами (строками или столбцами), но могут выполняться и над матрицами размером mn (m 2) по столбцам, порождая в результате вектор-строку, содержащий результаты обработки каждого столбца. Вот некоторые из этих функций:
max |
sum |
median |
any |
sort |
min |
prod |
mean |
all |
std |
Например, max(max(A)), а не max(A) даст максимальный элемент матрицы A.
5.8. Mатричные функции
Главное достоинство MATLAB заключается в ее матричных функциях. Наиболее полезные из них:
eig – собственные числа и собственные векторы;
chol – факторизация Холецкого;
svd – сингулярное разложение;
inv – обращение матрицы;
lu – LU-факторизация;
qr – QR-факторизация;
hess – форма Хессенберга;
schur – разложение Шура;
expm – матричная экспонента;
sqrtm – матричный квадратный корень;
poly – характеристический полином;
det – определитель;
size – размер;
cond – число обусловленности по норме L2;
rank – ранг матрицы.
Функции MATLAB могут иметь один или несколько выходных аргументов. Например, функция y=eig(A) или просто eig(A) сгенерирует вектор из собственных чисел A, а [U,D]= eig(A) – матрицу U, столбцами которой будут собственные векторы A и диагональную матрицу D с собственными числами на диагонали.
5.9. Подматрицы и форма записи с двоеточием
Векторы и подматрицы часто используются в MATLAB для манипуляций с довольно сложными данными. Форма записи с двоеточием (которая используется и для генерации векторов, и для образования подматриц) и индексация с помощью векторов позволяют эффективно работать с этими объектами. Интенсивное использование этих возможностей позволяет свести к минимуму применение замедляющих работу MATLAB циклов и сделать программу простой и удобной для чтения. Однако для овладения ими необходимы дополнительные усилия.
Выражение 1:5 (встречавшееся ранее в операторе for) обозначает вектор-строку [1 2 3 4 5]. Числа не обязательно должны быть целыми, а шаг может быть не единичным. Например, 0.2:0.2:1.2 – это запись вектора-строки [0.2 0.4 0.6 0.8 1.0 1.2], а 5:–1:1 – вектора-строки [5 4 3 2 1].
Следующие операторы генерируют таблицу синусов:
x = [0.0:0.1:2.0]';
y = sin(x);
[x y]
Заметим, что sin(x) – скалярная операция, поэтому вектор y будет строиться из x поэлементно.
Форма записи через двоеточие может быть использована для доступа к подматрицам данной матрицы. Например, A(1:4, 3) – это вектор-столбец, состоящий из первых четырех элементов третьего столбца матрицы A. Двоеточие означает, что строка или столбец должны быть взяты целиком:
A(:, 3) – третий столбец матрицыA;
A(1: 4, :) – первые четыре строки матрицыA.
Произвольно объединенные векторы могут использоваться как индексы: A(:, [2 4]) состоит из второго и четвертого столбцов матрицы A. Такая индексация может быть использована в обоих частях оператора присваивания: A(:, [2 4 5]) = B(:, 1:3) заменяет второй, четвертый и пятый столбцы A первыми тремя столбцами B.
Заметим, что вся измененная матрица A будет отображена на экране.
Умножим справа второй и четвертый столбцы матрицы A на матрицу размером 22 [1 2; 3 4]:
A(:, [2,4]) = A(:, [2 4])*[1 2; 3 4].
И опять вся измененная матрица отобразится на экране.
Чтобы оценить все преимущества этой формы записи, сравните приведенные здесь операторы MATLAB с программами на Паскале, фортране или Си, выполняющими те же действия.