exponenta event banner

modalfit

Модальные параметры из частотно-ответных функций

Описание

пример

fn = modalfit(frf,f,fs,mnum) оценивает собственные частоты mnum режимы системы с измеренными частотно-ответными функциями frf определяется на частотах f и для частоты выборки fs.

пример

fn = modalfit(frf,f,fs,mnum,Name,Value) задает дополнительные параметры с использованием аргументов пары «имя-значение».

пример

[fn,dr,ms] = modalfit(___) также возвращает коэффициенты демпфирования и векторы модовой формы, соответствующие каждой собственной частоте в fn, используя любую комбинацию входных данных из предыдущих синтаксисов.

пример

[fn,dr,ms,ofrf] = modalfit(___) также возвращает реконструированный массив частотно-ответных функций на основе оцененных модальных параметров.

[___] = modalfit(sys,f,mnum,Name,Value) оценивает модальные параметры идентифицированной модели sys. Использовать команды оценки, такие как ssest(Панель инструментов идентификации системы) или tfest(Панель инструментов идентификации системы) для создания sys начиная с измеренной частотно-ответной функции или от входных и выходных сигналов временной области. Этот синтаксис позволяет использовать 'DriveIndex', 'FreqRange', и 'PhysFreq' аргументы пары имя-значение. Обычно требуется меньше данных, чем синтаксисы, использующие непараметрические методы. Для использования этого синтаксиса необходимо иметь лицензию на Toolbox™ идентификации системы.

Примеры

свернуть все

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

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

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

Fs = 1;
dt = 1/Fs;
N = 3000;
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 = r - измеренный выходной сигнал. Матрицы состояния-пространства:

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

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(2))*Bc;

C = [1 0];
D = 0;

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

rng default
u = randn(1,N)/2;
u(2001:end) = 0;

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.

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

wind = hann(N/2);

[frf,f] = modalfrf(u',y',Fs,wind,'Sensor','dis');

Частотно-ответная функция дискретно-временной системы может быть выражена как Z-преобразование передаточной функции временной области системы, оцениваемой на единичной окружности. Сравните modalfrf оценка с определением.

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

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

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

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

Оцените собственную частоту и коэффициент демпфирования для режима вибрации.

[fn,dr] = modalfit(frf,f,Fs,1,'FitMethod','PP')
fn = 0.1593
dr = 0.0043

Сравните собственную частоту с 1/2δ, что является теоретическим значением для неразвернутой системы.

theo = 1/(2*pi)
theo = 0.1592

Вычисляют модальные параметры модуля космической станции, начиная с его матрицы частотно-ответной функции (FRF).

Загрузите структуру, содержащую массив FRF с тремя входами и тремя выходами. Дискретизация системы производится на частоте 320 Гц.

load modaldata SpaceStationFRF

frf = SpaceStationFRF.FRF; 
f = SpaceStationFRF.f; 
fs = SpaceStationFRF.Fs;

Извлеките модальные параметры самых низких 24 режимов методом рациональной функции методом наименьших квадратов.

[fn,dr,ms,ofrf] = modalfit(frf,f,fs,24,'FitMethod','lsrf');

Сравните реконструированную матрицу FRF с измеренной.

for ij = 1:3
 for ji = 1:3
    subplot(3,3,3*(ij-1)+ji)
    loglog(f,abs(frf(:,ji,ij)))
    hold on
    loglog(f,abs(ofrf(:,ji,ij)))
    hold off
    axis tight
    title(sprintf('In%d -> Out%d',ij,ji))
    if ij==3
        xlabel('Frequency (Hz)')
    end
 end
end

Figure contains 9 axes. Axes 1 with title In1 -> Out1 contains 2 objects of type line. Axes 2 with title In1 -> Out2 contains 2 objects of type line. Axes 3 with title In1 -> Out3 contains 2 objects of type line. Axes 4 with title In2 -> Out1 contains 2 objects of type line. Axes 5 with title In2 -> Out2 contains 2 objects of type line. Axes 6 with title In2 -> Out3 contains 2 objects of type line. Axes 7 with title In3 -> Out1 contains 2 objects of type line. Axes 8 with title In3 -> Out2 contains 2 objects of type line. Axes 9 with title In3 -> Out3 contains 2 objects of type line.

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

Идеальная одномерная колебательная система состоит из двух масс, m1 и m2, замкнутых между двумя стенками. Единицы измерения таковы, что m1 = 1 и m2 = λ. Каждая масса крепится к ближайшей стенке пружиной с постоянной упругости k. Идентичная пружина соединяет две массы. Три демпфера препятствуют движению масс, воздействуя на них силами, пропорциональными скорости, с постоянной демпфирования b. Образцы датчиков r1 и r2, смещения масс, при 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 = [r1r2] T - выходной вектор. Матрицы состояния-пространства:

A=exp (AcΔt), B=Ac-1 (A-I) до н.э, C = [10000010], D = [0000],

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

Ac = [0100-2k-2bkb0001k/μb/μ-2k/μ-2b/μ], до н.э = [00100001/μ].

Установите k = 400, b = 0,1 и λ = 1/10.

k = 400;
b = 0.1;
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 = [1 0 0 0;0 0 1 0];
D = zeros(2);

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

rng default
u = randn(2,N);

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

Используйте входные и выходные данные для оценки передаточной функции системы как функции частоты. Используйте 15000-образное окно Ганна с 9000 образцами перекрытия между соседними сегментами. Укажите, что измеренные выходы являются смещениями.

wind = hann(15000);
nove = 9000;
[FRF,f] = modalfrf(u',y',Fs,wind,nove,'Sensor','dis');

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

nfs = 2048;
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(f,20*log10(abs(FRF(:,jk,kj))))
        hold on
        plot(fz*Fs,20*log10(abs(frf(jk,:,kj))))
        hold off
        axis([0 Fs/2 -100 0])
        title(sprintf('Input %d, Output %d',jk,kj))
    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 1, Output 2 contains 2 objects of type line. Axes 3 with title Input 2, Output 1 contains 2 objects of type line. Axes 4 with title Input 2, Output 2 contains 2 objects of type line.

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

figure
modalfrf(u',y',Fs,wind,nove,'Sensor','dis')

Figure contains 8 axes. Axes 1 with title FRF11 contains an object of type line. Axes 2 contains an object of type line. Axes 3 with title FRF12 contains an object of type line. Axes 4 contains an object of type line. Axes 5 with title FRF21 contains an object of type line. Axes 6 contains an object of type line. Axes 7 with title FRF22 contains an object of type line. Axes 8 contains an object of type line.

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

[fn,dr,ms] = modalfit(FRF,f,Fs,2,'FitMethod','pp');
fn
fn = 
fn(:,:,1) =

    3.8466    3.8466
    3.8495    3.8495


fn(:,:,2) =

    3.8492    3.8490
    3.8552   14.4684

Сравните собственные частоты с теоретическими прогнозами для неразвернутой системы.

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

    3.8470
   14.4259

Вычислите собственные частоты, коэффициенты демпфирования и формы режимов для системы с двумя входами/тремя выходами, возбуждаемой несколькими пакетами случайного шума. Каждый пакет длится 1 секунду, и между концом каждого пакета и началом следующего есть 2 секунды. Данные дискретизируют при частоте 4 кГц.

Загрузите файл данных. Постройте график входных сигналов и выходных сигналов.

load modaldata

subplot(2,1,1)
plot(Xburst)
title('Input Signals')
subplot(2,1,2)
plot(Yburst)
title('Output Signals')

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

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

burstLen = 12000;
[frf,f] = modalfrf(Xburst,Yburst,fs,burstLen);

Визуализируйте схему стабилизации и возвращайте стабильные собственные частоты. Укажите максимальный порядок модели, равный 30 режимам.

figure
modalsd(frf,f,fs,'MaxModes',30);

Figure contains an axes. The axes with title Stabilization Diagram contains 4 objects of type line. These objects represent Stable in frequency, Stable in frequency and damping, Not stable in frequency, Averaged response function.

Увеличьте изображение графика. Усредненная функция отклика имеет максимумы при 373 Гц, 852 Гц и 1371 Гц, которые соответствуют физическим частотам системы. Сохраните максимумы в переменной.

phfr = [373 852 1371];

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

[fn,dr,ms,ofrf] = modalfit(frf,f,fs,6,'PhysFreq',phfr);

Постройте график восстановленных частотно-ответных функций и сравните их с исходными.

for k = 1:2
    for m = 1:3
        subplot(2,3,m+3*(k-1))
        plot(f/1000,10*log10(abs(frf(:,m,k))))
        hold on
        plot(f/1000,10*log10(abs(ofrf(:,m,k))))
        hold off
        text(1,-50,[['Output ';' Input '] num2str([m k]')])
        ylim([-100 -40])
    end
end
subplot(2,3,2)
title('Frequency-Response Functions')

Figure contains 6 axes. Axes 1 contains 3 objects of type line, text. Axes 2 with title Frequency-Response Functions contains 3 objects of type line, text. Axes 3 contains 3 objects of type line, text. Axes 4 contains 3 objects of type line, text. Axes 5 contains 3 objects of type line, text. Axes 6 contains 3 objects of type line, text.

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

свернуть все

Функции частотного отклика, заданные как вектор, матрица или 3-D массив. frf имеет размер p-by-m-by-n, где p - количество частотных ячеек, m - количество ответных сигналов, и n - количество сигналов возбуждения, используемых для оценки передаточной функции.

Пример: tfestimate(randn(1,1000),sin(2*pi*(1:1000)/4)+randn(1,1000)/10) аппроксимирует частотную характеристику генератора.

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

Частоты, заданные как вектор. Количество элементов f должно равняться количеству строк frf.

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

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

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

Число режимов, указанное как положительное целое число.

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

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

Пример: idss([0.5418 0.8373;-0.8373 0.5334],[0.4852;0.8373],[1 0],0,[0;0],[0;0],1) формирует идентифицированную модель состояния-пространства, соответствующую единичной массе, прикрепленной к стенке пружиной единичной упругой константы и демпфером с константой 0,01. Смещение массы отбирается при частоте 1 Гц.

Пример: idtf([0 0.4582 0.4566],[1 -1.0752 0.99],1) формирует идентифицированную модель передаточной функции, соответствующую единичной массе, прикрепленной к стенке пружиной единичной упругой константы и демпфером с константой 0,01. Смещение массы отбирается при частоте 1 Гц.

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: 'FitMethod','pp','FreqRange',[0 500] использует метод подбора пиков для выполнения посадки и ограничивает диапазон частот от 0 до 500 Гц.

Наличие прохода в расчетной передаточной функции, определяемой как разделенная запятыми пара, состоящая из 'Feedthrough' и логическое значение. Этот аргумент доступен только в том случае, если 'FitMethod' указывается как 'lsrf'.

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

Алгоритм подгонки, заданный как разделенная запятыми пара, состоящая из 'FitMethod' и 'lsce', 'lsrf', или 'pp'.

Диапазон частот, определяемый как разделенная запятыми пара, состоящая из 'FreqRange' и двухэлементный вектор увеличения положительных значений, содержащихся в диапазоне, указанном в f.

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

Собственные частоты для физических режимов, включаемых в анализ, определяемые как разделенная запятыми пара, состоящая из 'PhysFreq' и вектор значений частоты в диапазоне, охватываемом f. Функция включает в анализ те режимы с собственными частотами, которые наиболее близки к значениям, указанным в векторе. Если вектор содержит m значений частоты, то fn и dr имеют m строк каждый, и ms имеет m столбцов. Если этот аргумент не указан, функция использует весь диапазон частот в f.

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

Индексы функции тактовой частоты-отклика, определяемой как разделенная запятыми пара, состоящая из: 'DriveIndex' и двухэлементный вектор положительных целых чисел. Первый элемент вектора должен быть меньше или равен количеству системных ответов. Второй элемент вектора должен быть меньше или равен числу возбуждений системы. Формы моды нормализуются к моде единицы на основе ведущей точки.

Пример: 'DriveIndex',[2 3] указывает, что функция частотного отклика управляющей точки frf(:,2,3).

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

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

свернуть все

Собственные частоты, возвращаемые в виде матрицы или массива 3-D. Размер fn зависит от выбора алгоритма подгонки, указанного в 'FitMethod':

  • При указании 'lsce' или 'lsrf', то fn является вектором с mnum элементы, независимо от размера frf. Если система имеет более mnum колебательные режимы, затем 'lsrf' метод возвращает первый mnum наименее демпфированные режимы отсортированы в порядке увеличения собственной частоты.

  • При указании 'pp', то fn является массивом размера mnum-by-m-by-n с одной оценкой fn и одна оценка dr за frf.

Коэффициенты демпфирования для собственных частот в fn, возвращается в виде матрицы или массива 3-D того же размера, что и fn.

Векторы модовой формы, возвращаемые в виде матрицы. ms имеет mnum столбцы, каждый из которых содержит вектор модовой формы длины q, где q является большим из числа каналов возбуждения и числа каналов отклика.

Восстановленные частотно-ответные функции, возвращаемые как вектор, матрица или 3-D массив с тем же размером, что и frf.

Алгоритмы

свернуть все

Комплексный экспоненциальный метод наименьших квадратов

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

Отобранная демпфированная синусоида может быть отлита в форме

si (n) = Aie bin/fscos (2āfin/fs + starti) = 12Aiejü iexp ((bi/fs j2.dfi/fs) n) + 12Aie jeventiexp ((bi/fs + j2.dfi/fs) n) ≡ai+xi+n+ai−xi−n,

где:

  • fs - частота выборки.

  • fi - частота синусоиды.

  • bi - коэффициент демпфирования.

  • Ai - амплитуда и фаза синусоиды.

Аи называются амплитудами, а xi - полюсами. Метод Прони выражает дискретизированную функцию h (n) как суперпозицию N/2 мод (и, таким образом, N амплитуд и полюсов):

h (0) =a1x10+a2x20⋯+aNxN0h (1) =a1x11+a2x21+⋯+aNxN1⋮h (N 1) =a1x1N−1+a2x2N−1+⋯+aNxNN−1.

Полюса являются корнями многочлена с коэффициентами c0c1, ... , cN-1:

xiN+cN−1xiN−1+⋯+c1xi1+c0xi0=0.

Коэффициенты находят с использованием авторегрессивной модели из L = 2N выборок h:

[h (0) h (1) ⋯h (N 1) h (1) h (2) ⋯h (N) ⋮⋮⋱⋮h (L N 1) h (L N) ⋯h (L 2)] [c0c1⋮cN−1]=−[h (N) h (N + 1) ⋮h (L − 1)].

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

[h (0) ⋮h (N 1)] =[x10⋯xN0⋮⋱⋮x1N−1⋯xNN−1] [a1⋮aN].

Следующая наивная реализация MATLAB ® суммирует процедуру:

N = 4;
L = 2*N;
h = rand(L,1);
c = hankel(h(1:N),h(L-N:L-1))\-h(N+1:L);
x = roots([1;c(N:-1:1)]).';
p = log(x);
hrec = x.^((0:L-1)')*(x.^((0:L-1)')\h(1:L));
sum(h-hrec)
ans =

   3.2613e-15 - 1.9297e-16i
Система также может быть построена так, чтобы содержать выборки из множества функций частотной характеристики и решена с использованием наименьших квадратов.

Метод пикового комплектования

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

H (f) = 1 () 21/m f2 + j2startrfrf + fr2 H (f) fr2 + j2ζrfrfH (f) − 1 (2λ) 2 m = f2H (f),

где H - функция «частота-отклик», fr - несампертная резонансная частота, λ r  = b/( 4mk) 1/2 - относительное демпфирование, b - постоянная демпфирования, k - постоянная упругости, m - масса.

Учитывая пик, расположенный в fp, процедура переносит пик и фиксированное число точек в любую сторону, заменяет массовый член фиктивной переменной, d, и вычисляет модальные параметры, решая систему уравнений

[H (fp k) j2fp kH (fp k) −1⋮⋮⋮H (fp) j2fpH (fp) −1⋮⋮⋮H (fp + k) j2fp + kH (fp + k) 1] [fr2startrfrd] = [fp k2H (fp − k) ⋮fp2H (fp) ⋮fp+k2H (fp + k)].

Ссылки

[1] Аллеманг, Рэндалл Дж. и Дэвид Л. Браун. «Экспериментальный модальный анализ и синтез динамических компонентов, том III: оценка модальных параметров». Технический отчет AFWAL-TR-87-3069. Аэронавигационные лаборатории ВВС Райт, база ВВС Райт-Паттерсон, ОН, декабрь 1987 года.

[2] Брандт, Андерс. Анализ шума и вибрации: анализ сигналов и экспериментальные процедуры. Чичестер, Великобритания: John Wiley & Sons, 2011.

[3] Оздемир, Ахмет Арда и Суат Гумуссой. «Оценка передаточной функции в панели инструментов идентификации системы с помощью векторного фитинга». Материалы 20-го Всемирного конгресса Международной федерации автоматического управления, Тулуза, Франция, июль 2017 года.

См. также

| | | (Панель инструментов идентификации системы) | (Панель инструментов идентификации системы)

Темы

Представлен в R2017a