Методы параметрического моделирования находят параметры для математической модели, описывающей сигнал, систему или процесс. Эти методы используют известную информацию о системе, чтобы определить модель. Приложения для параметрического моделирования включают речь и музыкальный синтез, сжатие данных, спектральную оценку с высоким разрешением, коммуникации, производство и симуляцию.
Функции параметрического моделирования тулбокса действуют с рациональной моделью передаточной функции. Учитывая соответствующую информацию о неизвестной системе (данные об импульсной или частотной характеристике или последовательности ввода и вывода), эти функции находят коэффициенты линейной системы, это моделирует систему.
Одно важное приложение функций параметрического моделирования находится в проекте фильтров, которые имеют предписанное время или частотную характеристику.
Вот сводные данные функций параметрического моделирования в этом тулбоксе.
Область | Функции | Описание |
---|---|---|
Время | Сгенерируйте коэффициенты фильтра все-полюса, которые моделируют последовательность входных данных с помощью алгоритма Левинсона-Дербина. | |
Сгенерируйте коэффициенты фильтра все-полюса, которые моделируют последовательность входных данных путем минимизации прямой ошибки предсказания. | ||
Сгенерируйте коэффициенты фильтра все-полюса, которые моделируют последовательность входных данных путем минимизации прямых и обратных ошибок предсказания. | ||
Сгенерируйте коэффициенты фильтра все-полюса, которые моделируют последовательность входных данных с помощью оценки автокорреляционной функции. | ||
Линейное предсказательное кодирование. Сгенерируйте все-полюс рекурсивный фильтр, импульсная характеристика которого совпадает с данной последовательностью. | ||
Сгенерируйте БИХ-фильтр, импульсная характеристика которого совпадает с данной последовательностью. | ||
Найдите БИХ-фильтр, выход которого, учитывая заданную входную последовательность, совпадает с данной выходной последовательностью. | ||
Частота | Сгенерируйте цифровые или аналоговые коэффициенты фильтра, данные комплексные данные о частотной характеристике. |
lpc
, prony
, и stmcb
функции находят коэффициенты цифровой рациональной передаточной функции, которая аппроксимирует данную импульсную характеристику временного интервала. Алгоритмы отличаются по сложности и точности получившейся модели.
Моделирование линейного предсказания принимает что каждая выходная выборка сигнала, x(k)
, линейная комбинация прошлого n
выходные параметры (то есть, это может быть линейно предсказано от этих выходных параметров), и что коэффициенты являются постоянными от выборки до выборки:
n
модель все-полюса th-порядка 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