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