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

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

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

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

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

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

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

Область

Функции

Описание

Время

arburg

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

arcov

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

armcov

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

aryule

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

lpc, levinson

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

prony

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

stmcb

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

Частота

invfreqz, invfreqs

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

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

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)

Метод Прони (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