Методы параметрического моделирования находят параметры для математической модели, описывающей сигнал, систему или процесс. Эти методы используют известную информацию о системе, чтобы определить модель. Приложения для параметрического моделирования включают речь и музыкальный синтез, сжатие данных, спектральную оценку с высоким разрешением, коммуникации, производство и симуляцию.
Функции параметрического моделирования тулбокса действуют с рациональной моделью передаточной функции. Учитывая соответствующую информацию о неизвестной системе (импульс или данные о частотной характеристике или последовательности ввода и вывода), эти функции находят коэффициенты линейной системы, это моделирует систему.
Одно важное приложение функций параметрического моделирования находится в проекте фильтров, которые имеют предписанное время или частотную характеристику.
Вот сводные данные функций параметрического моделирования в этом тулбоксе.
Область | Функции | Описание |
---|---|---|
Время | Сгенерируйте коэффициенты фильтра все-полюса, которые моделируют последовательность входных данных с помощью алгоритма Левинсона-Дербина. | |
Сгенерируйте коэффициенты фильтра все-полюса, которые моделируют последовательность входных данных путем минимизации прямой ошибки прогноза. | ||
Сгенерируйте коэффициенты фильтра все-полюса, которые моделируют последовательность входных данных путем минимизации прямых и обратных ошибок прогноза. | ||
Сгенерируйте коэффициенты фильтра все-полюса, которые моделируют последовательность входных данных с помощью оценки автокорреляционной функции. | ||
Кодирование с линейным предсказанием. Сгенерируйте все-полюс рекурсивный фильтр, импульсный ответ которого совпадает с данной последовательностью. | ||
Сгенерируйте БИХ-фильтр, импульсный ответ которого совпадает с данной последовательностью. | ||
Найдите БИХ-фильтр, вывод которого, учитывая заданную входную последовательность, совпадает с данной выходной последовательностью. | ||
Частота | Сгенерируйте цифровые или аналоговые коэффициенты фильтра, данные комплексные данные о частотной характеристике. |
lpc
, prony
и функции stmcb
находят коэффициенты цифровой рациональной передаточной функции, которая аппроксимирует данный импульсный ответ временного интервала. Алгоритмы отличаются по сложности и точности получившейся модели.
Моделирование линейного предсказания принимает, что каждая выходная выборка сигнала, x(k)
, является линейной комбинацией прошлого n
выходные параметры (то есть, это может быть линейно предсказано от этих выходных параметров), и что коэффициенты являются постоянными от выборки до выборки:
Модель все-полюса th-порядка n
x
сигнала
a = lpc(x,n)
Чтобы проиллюстрировать lpc
, создайте демонстрационный сигнал, который является импульсным ответом фильтра все-полюса с аддитивным белым шумом:
x = impz(1,[1 0.1 0.1 0.1 0.1],10) + randn(10,1)/10;
Коэффициенты для все-полюса четвертого порядка фильтруют, это моделирует систему,
a = lpc(x,4)
lpc
сначала вызывает xcorr
, чтобы найти смещенную оценку функции корреляции x
, и затем использует рекурсию Левинсона-Дербина, реализованную в функции levinson
, чтобы найти коэффициенты модели a
. Рекурсия Левинсона-Дербина является алгоритмом FAST для решения системы симметричных линейных уравнений Теплица. целый алгоритм lpc
для n
= 4
r = xcorr(x); r(1:length(x)-1) = []; % Remove corr. at negative lags a = levinson(r,4)
Вы могли сформировать коэффициенты линейного предсказания с другими предположениями путем передачи различной оценки корреляции levinson
, такими как смещенная оценка корреляции:
r = xcorr(x,'biased'); r(1:length(x)-1) = []; % Remove corr. at negative lags a = levinson(r,4)
Модели функции prony
сигнал с помощью конкретного количества полюсов и нулей. Учитывая последовательность x
и числитель и знаменатель заказывают n
и m
, соответственно, оператор
[b,a] = prony(x,n,m)
находит числитель и коэффициенты знаменателя БИХ-фильтра, импульсный ответ которого аппроксимирует последовательность x
.
Функция prony
реализует метод, описанный в [4] Паркс и Беррус (PGS. 226-228). Этот метод использует изменение метода ковариации моделирования AR, чтобы найти коэффициенты знаменателя a
, и затем находит коэффициенты числителя b
, для которого импульсный ответ получившегося фильтра совпадает точно с первым n
+ выборки 1
x
. Фильтр не обязательно стабилен, но он может потенциально восстановить коэффициенты точно, если последовательность данных является действительно авторегрессивным скользящим средним значением (ARMA) процесс правильного порядка.
Функции prony
и stmcb
(описал затем) более точно описаны как модели ARX в терминологии системы идентификации. Моделирование ARMA принимает шум только во входных параметрах, в то время как ARX принимает внешний вход. prony
и stmcb
знают входной сигнал: это - импульс для prony
и произвольно для stmcb
.
Модель для тестовой последовательности x
(от более раннего примера lpc
) использование БИХ-фильтра третьего порядка
[b,a] = prony(x,3,3)
Команда impz
показывает, как хорошо импульсный ответ этого фильтра совпадает с исходной последовательностью:
format long [x impz(b,a,10)]
Заметьте, что первые четыре выборки соответствуют точно. Для примера точного восстановления восстановите коэффициенты Фильтра Баттерворта от его импульсного ответа:
[b,a] = butter(4,.2); h = impz(b,a,26); [bb,aa] = prony(h,4,4);
Попробуйте этот пример; вы будете видеть, что bb
и aa
совпадают с исходными коэффициентами фильтра к в допуске 10-13.
Функция stmcb
определяет коэффициенты для системы b (z)/a (z), учитывая аппроксимированный импульсный ответ x
, а также желаемое количество нулей и полюсов. Эта функция идентифицирует неизвестную систему на основе обеих последовательностей ввода и вывода, которые описывают поведение системы, или только импульсный ответ системы. В его режиме по умолчанию stmcb
работает как prony
.
[b,a] = stmcb(x,3,3)
stmcb
также находит системы, которые совпадают с данными последовательностями ввода и вывода:
y = filter(1,[1 1],x); % Create an output signal. [b,a] = stmcb(y,x,0,1)
В этом примере stmcb
правильно идентифицирует, что система раньше создавала y
из x
.
Метод Steiglitz-McBride является быстрым итеративным алгоритмом, который решает для числителя и коэффициентов знаменателя одновременно в попытке минимизировать ошибку сигнала между фильтром вывод и данным выходным сигналом. Этот алгоритм обычно сходится быстро, но не может сходиться, если порядок модели является слишком большим. Что касается prony
, получившийся фильтр stmcb
не обязательно стабилен из-за его точного подхода моделирования.
stmcb
обеспечивает управление несколькими важными алгоритмическими параметрами; измените эти параметры, если вы испытываете затруднения при моделировании данных. Изменить количество итераций от значения по умолчанию пять и обеспечить первоначальную оценку для коэффициентов знаменателя:
n = 10; % Number of iterations a = lpc(x,3); % Initial estimates for denominator [b,a] = stmcb(x,3,3,n,a);
Функция использует модель все-полюса, созданную с prony
как первоначальная оценка, когда вы не обеспечиваете одно собственное.
Чтобы сравнить функции lpc
, prony
и stmcb
, вычисляют ошибку сигнала в каждом случае:
a1 = lpc(x,3); [b2,a2] = prony(x,3,3); [b3,a3] = stmcb(x,3,3); [x-impz(1,a1,10) x-impz(b2,a2,10) x-impz(b3,a3,10)]
В сравнении возможностей моделирования данного распоряжения модель IIR последний результат показывает, что для этого примера, stmcb
выполняет лучше всего, сопровождаемый prony
, затем lpc
. Эта относительная производительность типична для функций моделирования.
invfreqs
и функции invfreqz
реализуют обратные операции freqs
и freqz
; они находят аналоговую или цифровую передаточную функцию заданного порядка, который совпадает с данной комплексной частотной характеристикой. Хотя следующие примеры демонстрируют invfreqz
, обсуждение также применяется к invfreqs
.
Восстановить исходные коэффициенты фильтра с частотной характеристики простого цифрового фильтра:
[b,a] = butter(4,0.4) % Design Butterworth lowpass [h,w] = freqz(b,a,64); % Compute frequency response [b4,a4] = invfreqz(h,w,4,4) % Model: n = 4, m = 4
Вектор частот, w
имеет модули в раде/выборке и частоты, не должен быть равномерно распределен. invfreqz
находит фильтр любого порядка соответствовать данным о частоте; пример третьего порядка
[b4,a4] = invfreqz(h,w,3,3) % Find third-order IIR
И invfreqs
и invfreqz
разрабатывают фильтры с действительными коэффициентами; для точки данных на положительной частоте f
функции соответствуют частотной характеристике и в f
и в -f
.
invfreqz
по умолчанию использует ошибочный метод уравнения, чтобы идентифицировать лучшую модель от данных. Это находит b и a в
путем создания системы линейных уравнений и решения их с
оператором MATLAB® \
. Здесь A (w (k)) и B (w (k)) является преобразованиями Фурье полиномов a
и b
соответственно на частоте w (k), и n является количеством точек частоты (длина h
и w
). wt (k) взвешивает ошибку относительно ошибки на различных частотах. Синтаксис
invfreqz(h,w,n,m,wt)
включает вектор взвешивания. В этом режиме фильтр, следующий из invfreqz
, как гарантируют, не будет стабилен.
invfreqz
предоставляет начальнику (“ошибка на выходе”) алгоритм, который решает прямую проблему минимизации взвешенной суммы квадратичной невязки между фактическими точками частотной характеристики и желаемым ответом
Чтобы использовать этот алгоритм, задайте параметр для количества итерации после параметра вектора веса:
wt = ones(size(w)); % Create unit weighting vector [b30,a30] = invfreqz(h,w,3,3,wt,30) % 30 iterations
Получившийся фильтр всегда стабилен.
Графически сравните результаты первых и вторых алгоритмов к исходному Фильтру Баттерворта с FVTool (и выберите Magnitude и Phase Responses):
fvtool(b,a,b4,a4,b30,a30)
Чтобы проверить превосходство подгонки численно, ввести
sum(abs(h-freqz(b4,a4,w)).^2) % Total error, algorithm 1 sum(abs(h-freqz(b30,a30,w)).^2) % Total error, algorithm 2