I attempted identification using a lsfd, but I was unable to achieve satisfactory results. Estimated FRF and experimental FRF are not the same.

1 次查看(过去 30 天)
clear all
close all
clc
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% [rn, LR, UR, frfm] = lsfd(w, frf, fn, xin)
% Least-Squares Frequency-Domain (LSFD) estimator for the residues
%
% k=n
% -----
% \ r_k LR
% H(s) = . -------------------------------------- + ------ + UR
% / s^2 + 2 s w_k xi_k + w_k^2 s^2
% -----
% k=0
%
% w natural frequency vector in rad/s
% frf complex frequency response function vector
% fn eigen frequency in Hz obtained using lsfc.m
% xin modal damping factor obtained using lsfc.m
%
% r_k complex residues
% LR and UR lower and upper residual terms
% frfm identified FRF in modal basis using s-model
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
load('Input_Run1_-X_26June2023');
load('FRF_DisSmooth_9June2023');
load('FRF_Amp_DR_27July2023');
%%%%%%%%%%%%%%%%%%%%%%
DataX=[FRF_DisSmooth_9June2023(:,1) FRF_DisSmooth_9June2023(:,2)];
DataY=[FRF_DisSmooth_9June2023(:,3) FRF_DisSmooth_9June2023(:,4)];
DataZ=[FRF_DisSmooth_9June2023(:,5) FRF_DisSmooth_9June2023(:,6)];
Impulse = Time_Point1__X.y_values.values;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
wn_Hz = FRF_Amp_DR_27July2023{1,1}(1,:);
zita = FRF_Amp_DR_27July2023{1,1}(2,:);
FRF_Amplitude = FRF_Amp_DR_27July2023{1,1}(3,:);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% FFT analysis
FRF_tot = zeros(size(DataX,1), 6);
Frequency_tot = zeros(6, size(DataX,1));
N = size(DataX,2);
i=1;
[m,n]=size(DataX(:,i));
Fs = 1024;
Ts = 1/Fs;
L1 = m;
% t = (0:L1-1)*Ts;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
X = DataX(1:L1,i);
P2 = abs(X/L1);
P1 = P2(1:L1);
% P1(2:end-1) = 2*P1(2:end-1);
P11=2*P1;
f1 = Fs*(0:(L1)-1)/L1;
fxx(i,:) = f1(1,:)*2*pi; % rad/s;
frfx(:,i) = P11(:,1)*Fs;
FRF_tot(:,i*3-2) = frfx(:,i);
Frequency_tot(i*3-2,:) = fxx(i,:);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
[w1, frf1] = select_frf(fxx(1,:)', frfx(:,1), 1, 700);
figure(1)
hold on
plot(w1/(2*pi), 20*log10(abs(frf1)), 'LineWidth', 1, ...
'Color', [0, 1, 1], 'DisplayName', 'Measured FRF')
xlim([1 700])
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
wn_Hz = wn_Hz(1,[1:end]);
zita = zita(1,[1:end]);
fns_x = wn_Hz;
xin = zita;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
s = 1j*w1;
wn = 2*pi*fns_x ;
nwn = length(wn) ;
L = length(w1) ;
% linear square modal constant estimation
Cls = zeros(L, nwn+2) ;
for ic=1:nwn+2
if ic <= nwn
Cls(:, ic) = 1./(s.^2+2*s*wn(ic)*xin(ic)+wn(ic)^2) ;
elseif ic == nwn+1
Cls(:, ic) = 1./(s.^2) ;
elseif ic == nwn+2
Cls(:, ic) = 1 ;
end
end
rntot = linsolve(Cls, frf1) ;
% residue
rn = rntot(1:nwn, 1) ;
% lower residual term
LR = rntot(nwn+1, 1) ;
% upper residual term
UR = rntot(nwn+2, 1) ;
% identified modal FRF in s-domain
frfm = zeros(L, nwn) ;
for ic=1:nwn
frfm(:, ic) = rn(ic)./(s.^2+2*s*wn(ic)*xin(ic)+wn(ic)^2) ;
end
frfm = sum(frfm, 2)+LR./(s.^2)+UR ;
plot(w1/(2*pi), 20*log10(abs(frfm)), ...
'r', 'DisplayName', 'Identified FRF using s-model')
legend('location', 'southwest')

回答(1 个)

Milan Bansal
Milan Bansal 2023-9-4
编辑:Milan Bansal 2023-9-14
Hi,
As per my understanding you are not you are not able to produce the Estimated FRF similar to the Experimental FRF.
The issue might be present in the "FFT Analysis" part of the code.
Refer to the Link given below. This contains information about the same problem and all the required functions along with example code.

类别

Help CenterFile Exchange 中查找有关 Linear Model Identification 的更多信息

标签

产品


版本

R2022a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by