exponenta event banner

tfestimate

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

Описание

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

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

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

  • Если x и y - матрицы с одинаковым количеством строк, но разным количеством столбцов, то txy - функция передачи с несколькими входами/многими выходами (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. Допустимые параметры для est являются 'H1' и 'H2'.

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

Примеры

свернуть все

Вычислите и постройте график оценки передаточной функции между двумя последовательностями, x и y. Последовательность x состоит из белого гауссова шума. y результаты фильтрации x с фильтром нижних частот 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, прикрепленной к стенке пружиной единичной упругой постоянной. Датчик производит выборку ускорения а массы при Fs = 1 Гц. Демпфер препятствует движению массы, прикладывая к ней силу, пропорциональную скорости, с постоянной демпфирования b = 0,01.

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

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

Система может быть описана с помощью модели state-space

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;

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

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 точек DFT и укажите окно Кайзера с коэффициентом формы 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);

Система может быть описана с помощью модели state-space

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

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

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

I - тождество 4 × 4, а матрицы состояния-пространства непрерывного времени -

Ac = [0100-2k-2bkb0001k/μb/μ-2k/μ-2b/μ], до н.э = [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];

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

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 точками DFT. Постройте график оценок.

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

Число точек DFT, указанное как положительное целое число. При указании 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).

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

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

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

    Для систем с множеством входов/множеством выходов (MIMO) модуль оценки H1 становится

    Первое полугодие (f) =PYX (f) PXX−1 (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 выходов, где:

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

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

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

    Первое полугодие (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).

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

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

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

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

    Второе полугодие (f) =PYY (f) PXY−1 (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,

    где:

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

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

Алгоритмы

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

Ссылки

[1] Вольд, Ховард, Джон Кроули и Г. Томас Роклин. «Новые способы оценки функций частотного отклика». Звук и вибрация. Том 18, ноябрь 1984, стр. 34-38.

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

.

См. также

| | |

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