modalfit

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

Синтаксис

fn = modalfit(frf,f,fs,mnum)
fn = modalfit(frf,f,fs,mnum,Name,Value)
[fn,dr,ms] = modalfit(___)
[fn,dr,ms,ofrf] = modalfit(___)
[___] = modalfit(sys,f,mnum,Name,Value)

Описание

пример

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'. Обычно требуется меньше данных, чем синтаксисы, которые используют непараметрические методы. У вас должна быть лицензия System Identification Toolbox™, чтобы использовать этот синтаксис.

Примеры

свернуть все

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

Одномерное дискретное время колеблющаяся система состоит из модульной массы, 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;

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

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;

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

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)

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

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])

Оцените собственную частоту и отношение затухания для режима вибрации.

[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).

Загрузите структуру, содержащую three-input/three-output 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

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

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

Сгенерируйте в 30,000 раз выборки, эквивалентные 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 соответственно местоположение и скорость iмасса th, u=[u1u2]T вектор входных движущих сил, и y=[r1r2]T выходной вектор. Матрицы пространства состояний

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

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

Ac=[0100-2k-2bkb0001k/μb/μ-2k/μ-2b/μ],Bc=[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);

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

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

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

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

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

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

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

[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

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

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

load modaldata

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

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

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

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

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

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

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')

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

свернуть все

Функции частотной характеристики, заданные как вектор, матрица или трехмерный массив. 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, начинающий с измеренной функции частотной характеристики или с сигналов ввода и вывода временного интервала. Смотрите Модальный Анализ Идентифицированных Моделей для примера. У вас должна быть лицензия System Identification Toolbox, чтобы использовать этот входной параметр.

Пример: 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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

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

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

Типы данных: логический

Алгоритм подбора, заданный как пара, разделенная запятой, состоящая из '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

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

свернуть все

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

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

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

Затухание отношений для собственных частот в fn, возвращенном как матрица или трехмерный массив, одного размера как fn.

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

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

Алгоритмы

свернуть все

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

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

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

si(n)=Aiebin/fsпотому что(2πfin/fs+ϕi)=12Aiejϕiexp((bi/fsj2πfi/fs)n)+12Aiejϕiexp((bi/fs+j2πfi/fs)n)ai+xi+n+aixin,

где:

  • f s является частотой дискретизации.

  • fi является частотой синусоиды.

  • bi является коэффициентом затухания.

  • Ai и ϕi являются амплитудой и фазой синусоиды.

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

h(0)=a1x10+a2x20+aNxN0h(1)=a1x11+a2x21++aNxN1h(N1)=a1x1N1+a2x2N1++aNxNN1.

Полюса являются корнями полинома с коэффициентами c 0c 1, …, c N –1:

xiN+cN1xiN1++c1xi1+c0xi0=0.

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

[h(0)h(1)h(N1)h(1)h(2)h(N)h(LN1)h(LN)h(L2)][c0c1cN1]=[h(N)h(N+1)h(L1)].

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

[h(0)h(N1)]=[x10xN0x1N1xNN1][a1aN].

Следующая наивная реализация 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(2π)21/mf2+j2ζrfrf+fr2 H(f)fr2 +j2ζrfrfH(f)1(2π)2m=f2H(f),

где H является функцией частотной характеристики, f r является незатухающей резонансной частотой, ζ r = , b / (4mk) 1/2 является относительным затуханием, b является постоянным затуханием, k является эластичной константой, и m является массой.

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

[H(fpk)j2fpkH(fpk)1H(fp)j2fpH(fp)1H(fp+k)j2fp+kH(fp+k)1][fr2 ζrfrd]=[fpk2H(fpk)fp2H(fp)fp+k2H(fp+k)].

Ссылки

[1] Allemang, Рэндалл Дж. и Дэвид Л. Браун. “Экспериментальный Модальный Анализ и Динамический Синтез Компонента, Издание III: Модальная Оценка Параметра”. Технический отчет AFWAL TR-87-3069. Авиационные лаборатории Мастера Военно-воздушных сил, Авиационная база ВВС Мастера-Patterson, OH, декабрь 1987.

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

[3] Ozdemir, Ахмет Арда и Суэт Гумассой. "Оценка Передаточной функции System Identification Toolbox через Подбор кривой Вектора". Продолжения 20-го Мирового Конгресса Международной федерации Автоматического управления, Тулузы, Франция, июль 2017.

Введенный в R2017a