Filter löschen
Filter löschen

How to Add Poles and Zeros on specific Frequencies while Estimating Transfer Function Using MATLAB (idfrd, tfest)

4 Ansichten (letzte 30 Tage)
Hello Respected Community Members,
I used MATLAB's idfrd, tfest tool to estimate the transfer function of my AFM Plant (PZT Actuator and Leaf Spring) using experimental data in the frequency domain; a picture of the Bode Plot (Estimated Transfer Function) is attached. The accuracy of my predicted transfer function is 88.46%.
I began at tfsys = tfest(sysfr, 1,1) and finished at tfest(sysfr,31,31).
I am happy with the higher order transfer function, but I want to add poles or zeros to the areas that are circled in the attached image since I am worried about low frequencies. How to add poles and zeros to/on these specific regions?
I've included my MATLAB code and CSV file with this query.
I'd also need advice from experts on how I could make my transfer function more precise using another estimation method or non-linear MATLAB techniques.
T1 = readtable('E2I_CSV.csv');
% Fill With Actual Sampling Frequency
FHz = T1.F;
Ts = 1/(2*(max(FHz)+10000))
Ts = 1.2500e-05
for k = 1:size(T1,1)-1
if FHz(k+1) == FHz(k)
FHz(k+1) = FHz(k+1)+0.5; % 'Brute Force' Interpolation
end
end
Mag = T1.G;
PhDeg = T1.P;
Response = Mag.*exp(1j*deg2rad(PhDeg)); % Complex Vector
sysfr = idfrd(Response, FHz, Ts, 'FrequencyUnit','Hz')
sysfr = IDFRD model. Contains Frequency Response Data for 1 output(s) and 1 input(s). Response data is available at 1001 frequency points, ranging from 100 Hz to 3e+04 Hz. Sample time: 1.25e-05 seconds Status: Created by direct construction or transformation. Not estimated.
%bode(sysfr);
tfsys = tfest(sysfr,31,31); %88.46%
%tfsys = tfest(sysfr,32,31); %87.67%
%tfsys = tfest(sysfr,30,30); %87.65%
%tfsys = tfest(sysfr,20,19); %84.65%
%tfsys = tfest(sysfr,16,15); %82.55
%tfsys = tfest(sysfr,14,13); %81.36
%tfsys = tfest(sysfr,12,11); %79.27
%tfsys = tfest(sysfr,10,9); %77.2%
%tfsys = tfest(sysfr,9,8); %75.85%
%tfsys = tfest(sysfr,5); %97.77 accurate
figure
compare(sysfr, tfsys)
% get(sysfr)

Antworten (0)

Kategorien

Mehr zu Linear Model Identification finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by