Model estimation and model order reduction

1 次查看(过去 30 天)
Hello all,
I am estimating model from input and output data of a perticular system,magnitude spectrum(bodemag(system)) of original system has spike at 786 rad/s but the estimated system getting spike at very low frequencies, I have tried by sampling the input signal with nyquist interval then I am getting spike at somewhat close to 786 frequency but the magnitude is increased to very large.Is it the problem of undersampling? Please comment on the problem.

回答(1 个)

Hari
Hari 2024-9-2
Hi Sachhitanand Bhojne,
I understand that you are estimating a model from the input and output data of a particular system. You have observed a spike in the magnitude spectrum of the original system at 786 rad/s, but the estimated system shows a spike at very low frequencies. After sampling the input signal with the Nyquist interval, the spike moves closer to 786 rad/s, but with a much higher magnitude.
To troubleshoot your issue, ensure your sampling frequency is at least twice the highest frequency in your data to avoid aliasing, per the Nyquist criterion. Use MATLAB's "tfest" or "ssest"functions for precise model estimation and consider "balred" function for reducing model complexity while keeping critical features like the 786 rad/s spike intact. Finally, validate your model's frequency response with bode or bodemag to confirm the spike's accurate representation. Below is the sample procedure to do that:
Assuming "inputData" and "outputData" are your system's input and output data vectors. Sample time "Ts" needs to be defined based on your sampling frequency
Define the system identification data object
data = iddata(outputData, inputData, Ts);
Estimate a transfer function model; adjust 'nx' as needed for your system
nx = 5; % Example model order
sysEst = tfest(data, nx);
Analyze the frequency response of the estimated system
figure;
bodemag(sysEst);
title('Estimated System Frequency Response');
Model order reduction and Comparing the frequency response of the reduced model
sysRed = balred(sysEst, 3); % Reduce to a lower order, e.g., 3
figure;
bodemag(sysEst, sysRed, {1e2, 1e4});
legend('Original', 'Reduced');
title('Frequency Response Comparison');
References for further exploration:
Hope this helps!

Community Treasure Hunt

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

Start Hunting!

Translated by