Параметрическое моделирование

Что такое Параметрическое моделирование

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

Доступные функции параметрического моделирования

Функции параметрического моделирования тулбокса действуют с рациональной моделью передаточной функции. Учитывая соответствующую информацию о неизвестной системе (данные об импульсной или частотной характеристике или последовательности ввода и вывода), эти функции находят коэффициенты линейной системы, это моделирует систему.

Одно важное приложение функций параметрического моделирования находится в проекте фильтров, которые имеют предписанное время или частотную характеристику.

Вот сводные данные функций параметрического моделирования в этом тулбоксе.

Область

Функции

Описание

Время

arburg

Сгенерируйте коэффициенты фильтра все-полюса, которые моделируют последовательность входных данных с помощью алгоритма Левинсона-Дербина.

arcov

Сгенерируйте коэффициенты фильтра все-полюса, которые моделируют последовательность входных данных путем минимизации прямой ошибки прогноза.

armcov

Сгенерируйте коэффициенты фильтра все-полюса, которые моделируют последовательность входных данных путем минимизации прямых и обратных ошибок прогноза.

aryule

Сгенерируйте коэффициенты фильтра все-полюса, которые моделируют последовательность входных данных с помощью оценки автокорреляционной функции.

lpc, levinson

Линейное предсказательное кодирование. Сгенерируйте все-полюс рекурсивный фильтр, импульсная характеристика которого совпадает с данной последовательностью.

prony

Сгенерируйте БИХ-фильтр, импульсная характеристика которого совпадает с данной последовательностью.

stmcb

Найдите БИХ-фильтр, выход которого, учитывая заданную входную последовательность, совпадает с данной выходной последовательностью.

Частота

invfreqz, invfreqs

Сгенерируйте цифровые или аналоговые коэффициенты фильтра, данные комплексные данные о частотной характеристике.

Основанное на временном интервале моделирование

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)

Метод Прони (ARMA, моделирующий)

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.

Метод Steiglitz-McBride (ARMA, моделирующий)

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