Why is "lsim" different than Simulink's "Linear Analysis Tool"

17 vues (au cours des 30 derniers jours)
Edward
Edward le 19 Mar 2014
Commenté : Raymond Wong le 25 Jan 2022
Hi All,
I have a simple transfer function. I want to analyze its time response to a random input signal. When I use the "lsim" command (or ltiviewer), I can run a simulation. However, when I implement my transfer function in Simulink, and run the same simulation (random input) using the Linear Analysis tool, I get completely different results. Is there a fundamental difference between the two tools? It seems like Simulink and lsim/ltiview are treating my transfer function differently...
Thanks!
-Ted

Réponse acceptée

Arkadiy Turevskiy
Arkadiy Turevskiy le 20 Mar 2014
Modifié(e) : Arkadiy Turevskiy le 20 Mar 2014
Yes, several suggestions/questions.
First of all, your workflow does not quite make sense. Frequency Response Estimation capability in the Linear Analysis tool is designed for computing frequency response of nonlinear Simulink models that cannot be linearized using exact linearization due to discontinuities such as PWM or triggered subsystems. It does not make sense to use it in your case - you can if you want to, but it is meaningless.
Let me explain why. What you have is a linear system - a transfer function. There is no need to linearize Simulink model that consists only of a transfer function - you already have this transfer function to start with! Also, there is no need to use frequency response estimation. What it does is that it injects a signal into the model, logs the output, and computes the FFT of system response from the input and output signals. Again, as you already have your transfer function, there is no need to use frequency response estimation.
In your case, it seems you are trying to simulate a transfer function output to a random signal. You already know how to do it in MATLAB. To do it in Simulink, you just run the simulation, you do not need to linearize the model or use frequency response estimation. Just double check that your Random number block generates the same signal as input signal you designed in MATLAB, replace the outport block with "To workspace" block, and run the simulation. The output of the simulation will match what you got in MATLAB (you'll need to change solver's step to be fixed step with the same sampling time you use in MATLAB code).
Now, if you really want to know why the time response you are getting in Frequency Response Estimation tool is different, read on.
1. First of all, when you use frequency response estimation, and generate an excitation signal, this excitation signal is added to the signal you already have in your Simulink model . In your case, this means that the input to your Simulink model, when you run frequency response estimation, will be the random signal you specify in frequency response estimation tool added to the output of Random Number block you have in your model. So what the model sees is a different input signal than what you have in your MATLAB code.
2. Even if you replace Random Number block with zero constant (so when you run frequency response estimation, model will only see the excitation signal you define in Frequency Response Estimation tool), (actually, a better way is to tell the tool to hold the output of this block constant, using BlocksToHoldConstant option ) you need to be careful with this random signal you specify in Frequency Response Tool. To get the same results as what you got with MATLAB code, that random signal from Frequency Response Estimation tool needs to match your input signal in MATLAB exactly. What you use in MATLAB is a random number, normal distribution with standard deviation of 1. The random signal in Frequency Response Estimation is a uniform random number spanning from 0 to Amplitude, so it will be a different signal than what you have in MATLAB, and therefore, you will get a different output.
Hope this helps.
  2 commentaires
Edward
Edward le 20 Mar 2014
Thanks, this helps a lot. I was pretty sure I was using Simulink incorrectly. Thanks for taking the time to explain.
Edward
Edward le 21 Mar 2014
Hi Arkadiy Turevskiy,
Could you please take a look at my latest question ( link )? Thanks again for your help.

Connectez-vous pour commenter.

Plus de réponses (1)

Arkadiy Turevskiy
Arkadiy Turevskiy le 19 Mar 2014
Can you be more clear about what you are doing. When you say " run the same simulation (random input) using the Linear Analysis tool" - what are you doing exactly. You should not be getting different results for the same transfer function, but you need to show what you are doing step by step, preferably with images, if you want help with troubleshooting your issue.
  2 commentaires
Edward
Edward le 20 Mar 2014
Modifié(e) : Edward le 20 Mar 2014
Okay, I can be more specific. I create a system object that represents my transfer function:
sys = tf([num1 ... numN], [den1 ... denN]);
The following commands give me a nice plot of my simulation results, based on 1000 seconds of random input, at 100 samples/second:
input = randn(100000,1);
t=0:.01:999.99;
lsimplot(sys,input,t)
I've zoomed in to a similar scale as in the next plot. The background is gray because the plot also shows the input (in gray).
***********
Now, in Simulink, I make a model that contains a random number generator that providing input to my same transfer function:
If I loosely follow the procedure given here ( link ), but use random input, I get something like the following:
*****
These look very different to me. Any suggestions?
Raymond Wong
Raymond Wong le 25 Jan 2022
I have the same confusion, you figured it out yet?

Connectez-vous pour commenter.

Community Treasure Hunt

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

Start Hunting!

Translated by