exponenta event banner

invfreqs

Определение параметров фильтра непрерывного времени из данных частотной характеристики

Описание

пример

[b,a] = invfreqs(h,w,n,m) возвращает векторы вещественного числителя и коэффициента знаменателя b и a передаточной функции h.

[b,a] = invfreqs(h,w,n,m,wt) весит ошибки подгонки в зависимости от частоты с помощью wt.

пример

[b,a] = invfreqs(___,iter) обеспечивает алгоритм, гарантирующий стабильность результирующей линейной системы путём поиска наилучшего вписывания с помощью численной итеративной схемы. Этот синтаксис может включать любую комбинацию входных аргументов из предыдущих синтаксисов.

[b,a] = invfreqs(___,tol) использование tol для определения сходимости итеративного алгоритма.

[b,a] = invfreqs(___,'trace') отображает текстовый отчет о ходе выполнения итерации.

[b,a] = invfreqs(h,w,'complex',n,m,___) создает сложный фильтр. В этом случае симметрия не применяется, и частота задается в радианах между -δ и δ.

Примеры

свернуть все

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

a = [1 2 3 2 1 4];
b = [1 2 3 2 3];

[h,w] = freqs(b,a,64);
[bb,aa] = invfreqs(h,w,4,5)
bb = 1×5

    1.0000    2.0000    3.0000    2.0000    3.0000

aa = 1×6

    1.0000    2.0000    3.0000    2.0000    1.0000    4.0000

bb и aa эквивалентны b и aсоответственно. Однако система нестабильна, поскольку aa имеет полюса с положительной реальной частью. bb и aa.

zplane(bb,aa)

Figure contains an axes. The axes contains 3 objects of type line.

Использовать итеративный алгоритм invfreqs найти устойчивое приближение к системе.

[bbb,aaa] = invfreqs(h,w,4,5,[],30)
bbb = 1×5

    0.6816    2.1015    2.6694    0.9113   -0.1218

aaa = 1×6

    1.0000    3.4676    7.4060    6.2102    2.5413    0.0001

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

zplane(bbb,aaa)

Figure contains an axes. The axes contains 3 objects of type line.

Создайте два вектора, mag и phase, которые моделируют данные о величине и фазе, собранные в лаборатории. Также создайте вектор, w, частот.

rng('default')

fs = 1000;
t = 0:1/fs:2;
mag = periodogram(sin(2*pi*100*t)+randn(size(t))/10,[],[],fs);
phase = randn(size(mag))/10;
w = linspace(0,fs/2,length(mag))';

Использовать invfreqs преобразование данных в функцию непрерывной передачи времени. Постройте график результата.

[b,a] = invfreqs(mag.*exp(1j*phase),w,2,2,[],4);

freqs(b,a)

Figure contains 2 axes. Axes 1 contains an object of type line. Axes 2 contains an object of type line.

Входные аргументы

свернуть все

Частотная характеристика, заданная как вектор.

Угловые частоты, на которых h вычисляется, указывается как вектор.

Требуемый порядок многочленов числителя и знаменателя, определяемый как положительные целочисленные скаляры.

Типы данных: single | double

Весовые коэффициенты, указанные как вектор. wt - вектор весовых коэффициентов той же длины, что и w.

Типы данных: single | double

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

Допуск, заданный как скаляр. invfreqs определяет сходимость как происходящую, когда норма (модифицированного) вектора градиента меньше tol.

Чтобы получить весовой вектор из всех, используйте

invfreqs(h,w,n,m,[],iter,tol)

Выходные аргументы

свернуть все

Коэффициенты передаточной функции, возвращаемые в виде векторов. Выразить передаточную функцию с точки зрения b и a как

H (s) = B (s) A (s) = b (1) sn + b (2) sn−1+⋯+b (n + 1) a (1) sm + a (2) sm−1+⋯+a (m + 1)

Пример: b = [1 3 3 1]/6 и a = [3 0 1 0]/3 укажите фильтр Баттерворта третьего порядка с нормированной частотой 3 дБ 0,5δ рад/выборка.

Типы данных: double | single
Поддержка комплексного номера: Да

Совет

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

Алгоритмы

По умолчанию invfreqs использует метод ошибки уравнения для определения наилучшей модели из данных. Это находит b и a в

minb,a∑k=1nwt (k) | h (k) A (w (k)) B (w (k)) | 2

путем создания системы линейных уравнений и их решения с помощью MATLAB ®\ оператор. Здесь A (w (k)) и B (w (k)) являются преобразованиями Фурье многочленовa и b, соответственно, на частоте w (k), а n - количество частотных точек (длина h и w). Этот алгоритм основан на Levi [1]. В литературе было предложено несколько вариантов, где функция взвешивания wt уделяет меньше внимания высоким частотам.

Алгоритм superior («output-error») использует метод Гаусса-Ньютона для итеративного поиска [2] с выводом первого алгоритма в качестве начальной оценки. Это решает прямую задачу минимизации взвешенной суммы квадратичной ошибки между фактической и желаемой точками частотной характеристики.

minb,a∑k=1nwt (k) | h (k) B (w (k)) A (w (k)) | 2

Ссылки

[1] Леви, Е. С. «Фитинг со сложной кривой». IRE Trans. on Automatic Control (автоматический контроль). т. AC-4, 1959, стр. 37-44.

[2] Деннис, Дж. Э., младший и Р. Б. Шнабель. Численные методы для неограниченной оптимизации и нелинейных уравнений. Энглвуд Клиффс, Нью-Джерси: Прентис-Холл, 1983.

См. также

| | |

Представлен до R2006a