Идентифицируйте модели систем в пространстве состояний. Используйте модели для вычисления функций частотной характеристики и модальных параметров. Этот пример требует лицензии System Identification Toolbox™.
Загрузите файл, содержащий данные возбуждения молотка с тремя входами/тремя выходами, дискретизированные с частотой дискретизации 4 кГц. Используйте первый выборки для оценки и выборок кому для валидации качества модели. Задайте шаг расчета как обратное скорости дискретизации. Сохраните данные как @iddata
объекты.
load modaldata XhammerMISO1 YhammerMISO1 fs rest = 1:1e4; rval = 2e4:5e4; Ts = 1/fs; Estimation = iddata(YhammerMISO1(rest,:),XhammerMISO1(rest,:),Ts); Validation = iddata(YhammerMISO1(rval,:),XhammerMISO1(rval,:),Ts,'Tstart',rval(1)*Ts);
Постройте график данных оценки и данных валидации.
plot(Estimation,Validation)
legend(gca,'show')
Используйте ssest
функция для оценки модели пространства состояний 7-го порядка системы, которая минимизирует ошибку симуляции между измеренными выходами и выходами модели. Задайте, что модель пространства состояний имеет сквозное соединение.
Orders = 7; opt = ssestOptions('Focus','simulation'); sys = ssest(Estimation,Orders,'Feedthrough',true,'Ts',Ts,opt);
(Чтобы найти порядок модели, который дает лучший компромисс между точностью и сложностью, установите Orders
на 1:15
в предыдущем коде. ssest
выводит журнал график сингулярных значений, который позволяет вам задавать порядок в интерактивном режиме. Функция также рекомендует порядок модели 7.)
Проверьте качество модели на наборе данных валидации. Постройте график нормированной среднеквадратичной ошибки (NRMSE) меры качества подгонки. Модель точно описывает выходные сигналы данных валидации.
compare(Validation,sys)
Оцените функции частотной характеристики модели. Отображение функций с помощью modalfrf
без выходных аргументов.
[frf,f] = modalfrf(sys); modalfrf(sys)
Предположим, что система хорошо описана с использованием трех режимов. Вычислите естественные частоты, коэффициенты затухания и векторы формы режима трех режимов.
Modes = 3; [fn,dr,ms] = modalfit(sys,f,Modes)
fn = 3×1
103 ×
0.3727
0.8525
1.3706
dr = 3×1
0.0008
0.0018
0.0029
ms = 3×3 complex
0.0036 - 0.0019i 0.0039 - 0.0005i 0.0021 + 0.0006i
0.0043 - 0.0023i 0.0010 - 0.0001i -0.0033 - 0.0010i
0.0040 - 0.0021i -0.0031 + 0.0004i 0.0011 + 0.0003i
Вычислите и отобразите восстановленные функции частотной характеристики. Выразите величины в децибелах.
[~,~,~,ofrf] = modalfit(sys,f,Modes); clf for ij = 1:3 for ji = 1:3 subplot(3,3,3*(ij-1)+ji) plot(f/1000,20*log10(abs(ofrf(:,ji,ij)))) axis tight title(sprintf('In%d -> Out%d',ij,ji)) if ij==3 xlabel('Frequency (kHz)') end end end
Загрузите файл, содержащий измерение частотной характеристики высокой модальной плотности. Данные соответствуют нестабильному процессу, поддерживаемому в равновесии с помощью управления с обратной связью. Сохраните данные как idfrd
объект для идентификации. Постройте график Bode-схемы.
load HighModalDensData FRF f G = idfrd(permute(FRF,[2 3 1]),f,0,'FrequencyUnit','Hz'); figure bodemag(G) xlim([0.01,2e3])
Идентифицируйте передаточную функцию с 32 полюсами и 32 нулями.
sys = tfest(G,32,32);
Сравните частотную характеристику модели с измеренным откликом.
bodemag(G,sys)
xlim([0.01,2e3])
legend(gca,'show')
Извлеките естественные частоты и коэффициенты затухания первых 10 наименее демпфированных колебательных режимов. Сохраните результаты в таблице.
[fn,dr] = modalfit(sys,[],10); T = table((1:10)',fn,dr,'VariableNames',{'Mode','Frequency','Damping'})
T=10×3 table
Mode Frequency Damping
____ _________ _________
1 82.764 0.011304
2 85.013 0.015632
3 124.04 0.025252
4 142.04 0.017687
5 251.46 0.0062182
6 332.79 0.0058266
7 401.21 0.0043645
8 625.14 0.0039247
9 770.49 0.002795
10 943.64 0.0019943