tfestimate

Оценка передаточной функции

Описание

txy = tfestimate(x,y) находит оценку передаточной функции, txy, заданный входной сигнал, xи сигнал выхода, y.

  • Если x и y являются обоими векторами, они должны иметь одинаковую длину.

  • Если один из сигналов является матрицей, а другой - вектором, то длина вектора должна равняться количеству строк в матрице. Функция расширяет вектор и возвращает матрицу оценок передаточных функций по столбцам.

  • Если x и y являются матрицами с одинаковым числом строк, но различными числами столбцов, затем txy - передаточная функция multi-input/multi-output (MIMO), которая объединяет все входные и выходные сигналы. txy является трехмерным массивом. Если x имеет m столбцов и y имеет n столбцов, затем txy имеет n столбцов и m страницы. Для получения дополнительной информации смотрите Передаточная Функция.

  • Если x и y матрицы равного размера, тогда tfestimate работает по столбцу: txy(:,n) = tfestimate(x(:,n),y(:,n)). Чтобы получить оценку MIMO, добавьте 'mimo' в список аргументов.

пример

txy = tfestimate(x,y,window) использует window чтобы разделить x и y в сегменты и выполните оконную обработку.

txy = tfestimate(x,y,window,noverlap) использует noverlap выборки перекрытия между смежными сегментами.

txy = tfestimate(x,y,window,noverlap,nfft) использует nfft точки дискретной дискретизации для вычисления дискретного преобразования Фурье.

txy = tfestimate(___,'mimo') вычисляет передаточную функцию MIMO для матричных входов. Этот синтаксис может включать любую комбинацию входных параметров из предыдущих синтаксисов.

[txy,w] = tfestimate(___) возвращает вектор нормированных частот, w, при котором оценивается передаточная функция.

пример

[txy,f] = tfestimate(___,fs) возвращает вектор частот, f, выраженная в терминах частоты дискретизации, fs, при котором оценивается передаточная функция. fs должен быть шестым числовым входом, tfestimate. Чтобы ввести частоту дискретизации и использовать значения по умолчанию предыдущих необязательных аргументов, задайте эти аргументы как пустые [].

[txy,w] = tfestimate(x,y,window,noverlap,w) возвращает оценку передаточной функции на нормированных частотах, заданных в w.

[txy,f] = tfestimate(x,y,window,noverlap,f,fs) возвращает оценку передаточной функции на частотах, заданных в f.

[___] = tfestimate(x,y,___,freqrange) возвращает оценку передаточной функции в частотной области значений, заданном freqrange. Допустимые опции для freqrange являются 'onesided', 'twosided', и 'centered'.

пример

[___] = tfestimate(___,'Estimator',est) оценивает передаточные функции с помощью est estimator. Допустимые опции для est являются 'H1' и 'H2'.

tfestimate(___) без выходных аргументов строит график оценки передаточной функции в текущую фигуру окне.

Примеры

свернуть все

Вычислите и постройте график оценки передаточной функции между двумя последовательностями, x и y. Последовательность x состоит из белого Гауссова шума. y результаты фильтрации x с lowpass 30-го порядка с нормированной частотой отсечения 0.2π рад/образец. Для создания фильтра используйте прямоугольное окно. Задайте частоту дискретизации 500 Гц и окно Хэмминга длины 1024 для оценки передаточной функции.

h = fir1(30,0.2,rectwin(31));
x = randn(16384,1);
y = filter(h,1,x);

fs = 500;
tfestimate(x,y,1024,[],[],fs)

Figure contains an axes. The axes with title Transfer Function Estimate via Welch contains an object of type line.

Использование fvtool чтобы убедиться, что передаточная функция аппроксимирует частотную характеристику фильтра.

fvtool(h,1,'Fs',fs)

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains an object of type line.

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

[Txy,f] = tfestimate(x,y,1024,[],[],fs);

plot(f,mag2db(abs(Txy)))

Figure contains an axes. The axes contains an object of type line.

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

Одномерное дискретное время система состоит из модуля массы, m, прикрепленный к стене пружиной модуль упругой константы. Датчик дискретизирует ускорение, a, массы при Fs=1 Гц. Демпфер препятствует движению массы, прикладывая к ней силу, пропорциональную скорости, с постоянной демпфирования b=0.01.

Сгенерируйте 2000 временных выборок. Определите интервал дискретизации Δt=1/Fs.

Fs = 1;
dt = 1/Fs;
N = 2000;
t = dt*(0:N-1);
b = 0.01;

Система может быть описана моделью пространства состояний

x(k+1)=Ax(k)+Bu(k),y(k)=Cx(k)+Du(k),

где x=[rv]T - вектор состояния, r и v являются соответственно положением и скоростью массы, u является движущей силой, и y=a - измеренный выход. Матрицы пространства состояний

A=exp(AcΔt),B=Ac-1(A-I)Bc,C=[-1-b],D=1,

I является 2×2 единичные, и матрицы пространства состояний в непрерывном времени

Ac=[01-1-b],Bc=[01].

Ac = [0 1;-1 -b];
A = expm(Ac*dt);

Bc = [0;1];
B = Ac\(A-eye(size(A)))*Bc;

C = [-1 -b];
D = 1;

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

rng default

u = zeros(1,N);
u(1:N/2) = randn(1,N/2);

y = 0;
x = [0;0];
for k = 1:N
    y(k) = C*x + D*u(k);
    x = A*x + B*u(k);
end

plot(t,y)

Figure contains an axes. The axes contains an object of type line.

Оцените передаточную функцию системы как функцию от частоты. Используйте 2048 точек ДПФ и задайте окно Кайзера с масштабным фактором 15. Используйте значение перекрытия по умолчанию между смежными сегментами.

nfs = 2048;
wind = kaiser(N,15);

[txy,ft] = tfestimate(u,y,wind,[],nfs,Fs);

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

[b,a] = ss2tf(A,B,C,D);

fz = 0:1/nfs:1/2-1/nfs;
z = exp(2j*pi*fz);
frf = polyval(b,z)./polyval(a,z);

plot(ft,20*log10(abs(txy)))
hold on
plot(fz,20*log10(abs(frf)))
hold off
grid
ylim([-60 40])

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

Постройте график оценки с помощью встроенной функциональности tfestimate.

tfestimate(u,y,wind,[],nfs,Fs)

Figure contains an axes. The axes with title Transfer Function Estimate via Welch contains an object of type line.

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

Идеальная одномерная колебательная система состоит из двух масс, m1 и m2, ограниченный между двумя стенками. Модули такие, что m1=1 и m2=μ. Каждая масса присоединена к ближайшей стенке пружиной с упругой константой k. Идентичная пружина соединяет две массы. Три демпфера препятствуют движению масс, прикладывая к ним силы, пропорциональные скорости с постоянной демпфирования b. Выборка датчиков a1 и a2, ускорения масс, при Fs=50 Гц.

Сгенерируйте 30000 временных выборок, эквивалентных 600 секундам. Определите интервал дискретизации Δt=1/Fs.

Fs = 50;
dt = 1/Fs;
N = 30000;
t = dt*(0:N-1);

Система может быть описана моделью пространства состояний

x(k+1)=Ax(k)+Bu(k),y(k)=Cx(k)+Du(k),

где x=[r1v1r2v2]T - вектор состояния, ri и vi являются соответственно местоположением и скоростью ith-я масса, u=[u1u2]T является вектором входа движущих сил, и y=[a1a2]T - вектор выхода. Матрицы пространства состояний

A=exp(AcΔt),B=Ac-1(A-I)Bc,C=[-2k-2bkbk/μb/μ-2k/μ-2b/μ],D=[1001/μ],

I является 4×4 единичные, и матрицы пространства состояний в непрерывном времени

Ac=[0100-2k-2bkb0001k/μb/μ-2k/μ-2b/μ],Bc=[00100001/μ].

Набор k=400, b=0, и μ=1/10.

k = 400;
b = 0;
m = 1/10;

Ac = [0 1 0 0;-2*k -2*b k b;0 0 0 1;k/m b/m -2*k/m -2*b/m];
A = expm(Ac*dt);
Bc = [0 0;1 0;0 0;0 1/m];
B = Ac\(A-eye(4))*Bc;
C = [-2*k -2*b k b;k/m b/m -2*k/m -2*b/m];
D = [1 0;0 1/m];

Массы управляются случайным входом на протяжении всего измерения. Используйте модель пространства состояний, чтобы вычислить временную эволюцию системы, начиная с полностью нулевого начального состояния.

rng default
u = randn(2,N);

x = [0;0;0;0];
for kk = 1:N
    y(:,kk) = C*x + D*u(:,kk);
    x = A*x + B*u(:,kk);
end

Используйте входные и выходные данные, чтобы оценить передаточную функцию системы как функцию от частоты. Задайте 'mimo' опция для создания всех четырех передаточных функций. Используйте 5000-выборочное окно Ханна, чтобы разделить сигналы на сегменты. Задайте 2500 выборки перекрытия между смежными сегментами и 214 Точки ДПФ. Постройте график оценок.

wind = hann(5000);
nov = 2500;

[q,fq] = tfestimate(u',y',wind,nov,2^14,Fs,'mimo');

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

nfs = 2^14;

fz = 0:1/nfs:1/2-1/nfs;
z = exp(2j*pi*fz);

[b1,a1] = ss2tf(A,B,C,D,1);
[b2,a2] = ss2tf(A,B,C,D,2);

frf(1,:,1) = polyval(b1(1,:),z)./polyval(a1,z);
frf(1,:,2) = polyval(b1(2,:),z)./polyval(a1,z);

frf(2,:,1) = polyval(b2(1,:),z)./polyval(a2,z);
frf(2,:,2) = polyval(b2(2,:),z)./polyval(a2,z);

Постройте график теоретических передаточных функций и их соответствующих оценок.

for jk = 1:2
    for kj = 1:2
        subplot(2,2,2*(jk-1)+kj)
        plot(fq,20*log10(abs(q(:,jk,kj))))
        hold on
        plot(fz*Fs,20*log10(abs(frf(jk,:,kj))))
        hold off
        grid
        title(['Input ' int2str(kj) ', Output ' int2str(jk)])
        axis([0 Fs/2 -50 100])
    end
end

Figure contains 4 axes. Axes 1 with title Input 1, Output 1 contains 2 objects of type line. Axes 2 with title Input 2, Output 1 contains 2 objects of type line. Axes 3 with title Input 1, Output 2 contains 2 objects of type line. Axes 4 with title Input 2, Output 2 contains 2 objects of type line.

Передаточные функции имеют максимумы в ожидаемых значениях, ω1,2/2π, где ω являются собственными значениями модальной матрицы.

sqrt(eig(k*[2 -1;-1/m 2/m]))/(2*pi)
ans = 2×1

    3.8470
   14.4259

Добавьте демпфирование в систему путем установки b=0.1. Вычислите временную эволюцию демпфированной системы с теми же движущими силами. Вычислите H2 оценка передаточной функции MIMO с использованием того же окна и перекрытия. Постройте график оценок с помощью tfestimate функциональность.

b = 0.1;

Ac = [0 1 0 0;-2*k -2*b k b;0 0 0 1;k/m b/m -2*k/m -2*b/m];
A = expm(Ac*dt);
B = Ac\(A-eye(4))*Bc;
C = [-2*k -2*b k b;k/m b/m -2*k/m -2*b/m];

x = [0;0;0;0];
for kk = 1:N
    y(:,kk) = C*x + D*u(:,kk);
    x = A*x + B*u(:,kk);
end

clf
tfestimate(u',y',wind,nov,[],Fs,'mimo','Estimator','H2')
legend('I1, O1','I1, O2','I2, O1','I2, O2')

Figure contains an axes. The axes with title Transfer Function Estimate via Welch contains 4 objects of type line. These objects represent I1, O1, I1, O2, I2, O1, I2, O2.

yl = ylim;

Сравните оценки с теоретическими предсказаниями.

[b1,a1] = ss2tf(A,B,C,D,1);
[b2,a2] = ss2tf(A,B,C,D,2);

frf(1,:,1) = polyval(b1(1,:),z)./polyval(a1,z);
frf(1,:,2) = polyval(b1(2,:),z)./polyval(a1,z);

frf(2,:,1) = polyval(b2(1,:),z)./polyval(a2,z);
frf(2,:,2) = polyval(b2(2,:),z)./polyval(a2,z);

plot(fz*Fs,20*log10(abs(reshape(permute(frf,[2 1 3]),[nfs/2 4]))))
legend('I1, O1','I1, O2','I2, O1','I2, O2')
ylim(yl)
grid

Figure contains an axes. The axes contains 4 objects of type line. These objects represent I1, O1, I1, O2, I2, O1, I2, O2.

Входные параметры

свернуть все

Входной сигнал, заданный как вектор или матрица.

Пример: cos(pi/4*(0:159))+randn(1,160) задает синусоиду, встроенную в белый Гауссов шум.

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

Выходной сигнал, заданный в виде вектора или матрицы.

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

Окно, заданное как целое число или как строка или вектор-столбец. Использование window чтобы разделить сигнал на сегменты.

  • Если window является целым числом, тогда tfestimate делит x и y в сегменты длины window и оконные окна каждого сегмента с окном Хэмминга такой длины.

  • Если window является вектором, тогда tfestimate делит x и y в сегменты той же длины, что и вектор, и окна каждый сегмент используя window.

Если длина x и y нельзя разделить точно на целое число сегментов с noverlap перекрывая выборки, сигналы усекаются соответственно.

Если вы задаете window как пустой, тогда tfestimate использует окно Хэмминга, такое что x и y делятся на восемь сегментов с noverlap перекрываемые выборки.

Список доступных окон см. в разделе Windows.

Пример: hann(N+1) и (1-cos(2*pi*(0:N)'/N))/2 оба задают окно Ханна длины N  + 1.

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

Количество перекрывающихся выборок, заданное как положительное целое число.

  • Если window скаляром, тогда noverlap должно быть меньше window.

  • Если window является вектором, тогда noverlap должно быть меньше длины window.

Если вы задаете noverlap как пустой, тогда tfestimate использует число, которое создает 50% перекрытия между сегментами. Если длина сегмента не задана, функция устанавливает noverlap для ⌊ N/4,5 ⌋, где N - длина входного и выходного сигналов.

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

Количество точек ДПФ, заданное как положительное целое число. Если вы задаете nfft как пустой, тогда tfestimate устанавливает этот аргумент в max (256,2p), где p = ⌈ log2 N ⌉ для входных сигналов длины N.

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

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

Нормированные частоты, заданные как строка или вектор-столбец с по крайней мере двумя элементами. Нормированные частоты указаны в рад/отсчет.

Пример: w = [pi/4 pi/2]

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

Частоты, заданные как строка или вектор-столбец с по крайней мере двумя элементами. Частоты указаны в циклах в единицах времени. Единичное время задается частотой дискретизации, fs. Если fs имеет модули измерения проб/секунду, затем f содержит модули Гц.

Пример: fs = 1000; f = [100 200]

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

Частотная область значений для оценки передаточной функции, заданный как один из 'onesided', 'twosided', или 'centered'. Значение по умолчанию является 'onesided' для реальных сигналов и 'twosided' для комплексных сигналов.

  • 'onesided' - Возвращает одностороннюю оценку передаточной функции между двумя реальными входными сигналами, x и y. Если nfft является четным, txy имеет nfft/ 2 + 1 строки и вычисляется через интервал [0, π] рад/отсчет. Если nfft нечетно, txy имеет (nfft + 1 )/2 строки и интервал [0, π) рад/отсчет. Если вы задаете fsсоответствующие интервалы: [0, fs/ 2] циклов/единичное время для четных nfft и [0, fs/ 2) циклы/единичное время для нечетных nfft.

  • 'twosided' - Возвращает двустороннюю оценку передаточной функции между двумя реальными или комплексными входными сигналами, x и y. В этом случае txy имеет nfft строки и вычисляется через интервал [0,2 π) рад/отсчета. Если вы задаете fs, интервал является [0, fs) циклы/единичное время.

  • 'centered' - Возвращает центрированную двустороннюю оценку передаточной функции между двумя реальными или комплексными входными сигналами x и y. В этом случае txy имеет nfft строки и вычисляется через интервал (- π, π] рад/отсчет для четных nfft и (- π, π) рад/отсчет для нечетных nfft. Если вы задаете fs, соответствующие интервалы: (- fs/2, fs/ 2] циклов/единичное время для четных nfft и (- fs/2, fs/ 2) циклы/единичное время для нечетных nfft.

Оценка передаточной функции, заданная как 'H1' или 'H2'.

  • Использование 'H1' когда шум некоррелирован с входными сигналами.

  • Использование 'H2' когда шум некоррелирован с выходными сигналами. В этом случае количество входных сигналов должно равняться количеству выхода сигналов.

Для получения дополнительной информации смотрите Передаточная Функция.

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

свернуть все

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

Нормированные частоты, возвращенные как реальный вектор-столбец.

Циклические частоты, возвращенные как реальный вектор-столбец.

Подробнее о

свернуть все

Передаточная функция

Связь между входом x и выход y моделируется линейной, инвариантной по времени передаточной функцией txy. В частотный диапазон Y (f ) = H (f) X (f).

  • Для системы с одним входом/одним выходом H 1 оценка передаточной функции задается как

    H1(f)=Pyx(f)Pxx(f),

    где Pyx - взаимная спектральная плотность мощности x и y, и Pxx является спектральной плотностью степени x. Эта оценка принимает, что шум не коррелирует с системным входом.

    Для систем с несколькими входами/несколькими выходами (MIMO), H оценка 1 становится

    H1(f)=PYX(f)PXX1(f)=[Py1x1(f)Py1x2(f)Py1xm(f)Py2x1(f)Py2x2(f)Py2xm(f)Pynx1(f)Pynx2(f)Pynxm(f)][Px1x1(f)Px1x2(f)Px1xm(f)Px2x1(f)Px2x2(f)Px2xm(f)Pxmx1(f)Pxmx2(f)Pxmxm(f)]1

    для m входов и n выходов, где:

    • Pyixk - взаимная спектральная плотность мощности k-го входа и i-го выхода.

    • Pxixk - взаимная спектральная плотность мощности k-го и i-го входов.

    Для двух входов и двух выходов оценщиком является матрица

    H1(f)=[Py1x1(f)Px2x2(f)Py1x2(f)Px2x1(f)Py1x2(f)Px1x1(f)Py1x1(f)Px1x2(f)Py2x1(f)Px2x2(f)Py2x2(f)Px2x1(f)Py2x2(f)Px1x1(f)Py2x1(f)Px1x2(f)]Px1x1(f)Px2x2(f)Px1x2(f)Px2x1(f).

  • Для системы с одним входом/одним выходом H 2 оценка передаточной функции задается как

    H2(f)=Pyy(f)Pxy(f),

    где Pyy - спектральная плотность степени y и Pxy = P*yx - комплексный сопряжённая взаимная спектральная плотность мощности x и y. Эта оценка принимает, что шум не коррелирует с выходным сигналом системы.

    Для систем MIMO H оценка 2 четко определена только для равного количества входов и выходов:  n = m. Оценщик становится

    H2(f)=PYY(f)PXY1(f)=[Py1y1(f)Py1y2(f)Py1yn(f)Py2y1(f)Py2y2(f)Py2yn(f)Pyny1(f)Pyny2(f)Pynyn(f)][Px1y1(f)Px1y2(f)Px1yn(f)Px2y1(f)Px2y2(f)Px2yn(f)Pxny1(f)Pxny2(f)Pxnyn(f)]1,

    где:

    • Pyiyk - спектральная плотность поперечной мощности k-го и i-го выходов.

    • Pxiyk - комплексный сопряженный спектральной плотности поперечной мощности i-го входа и k-го выхода.

Алгоритмы

tfestimate использует средний метод периодограммы Уэлча. Посмотрите pwelch для получения дополнительной информации.

Ссылки

[1] Vold, Hovard, John Crowley, and G. Thomas Rocklin. Новые способы оценки функций частотной характеристики. Звук и вибрация. Том 18, ноябрь 1984, стр. 34-38.

Расширенные возможности

.

См. также

| | |

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