Averaging a signal at periodic intervals in Simulink

조회 수: 36 (최근 30일)
Fargham Ahmad
Fargham Ahmad 2019년 2월 15일
답변: Fargham Ahmad 2019년 2월 16일
I am trying to compute the average of a signal at periodic intervals. The signal is sampled at some rate say 0.1s, i want to compute avegare after every one second in simulink. I tried to integrate the signal over every second and then multipy it one second to get an avg value of signal. This method is not valid as the integraor is causing my function to blow up.
Please share any possible methods, Thanks.

채택된 답변

Fargham Ahmad
Fargham Ahmad 2019년 2월 16일
SignalAvgSimulink.jpg

추가 답변 (1개)

Jim Riggs
Jim Riggs 2019년 2월 15일
In my mind, the easiest way to do this is to create a Matlab function to do it, and embed the function into a Matlab block in Simulink. It's a lot harder to do this kind of thing in Simulink because of the complex logic involved. (Stateflow helps a lot)
Make a matlab function that stores the signal in a circular buffer. Once you have enough samples in the buffer, you can output the average value over the N=10 samples. You can make the code so that it only outpus a new value every 1 second, or it can output every 0.1 s. (i.e. a "sliding average" ) using the 10 most recent samples.
  댓글 수: 4
Jim Riggs
Jim Riggs 2019년 2월 16일
편집: Jim Riggs 2019년 2월 16일
Here is a sample output for a linear ramp test case:
This is a 0.1 sample rate, Navg = 10 and Nout = 10.
This is for Navg = 10 and Nout = 5
And this one is Navg = 10 and Nout = 2
Notice how they all have a 10 sample delay at the start.
Notice also that this test case runs at 0.1 time step for 10 seconds, and therefore generates 100 calls to the WindowAverage function. I set the buffer size to 50 in the function to verify that it wrapped correctly back to the start when it reaches the end.
Fargham Ahmad
Fargham Ahmad 2019년 2월 16일
Dear Jim Riggs,
Thank you so much for taking time out for helping me out. I am indeed very grateful for your solution and the presentation, it was very easy to understand following the guide lines you mentioned.
I took sometime understanding the code, it works sort of fine for the linear ramp. However, the results weren't so consistent for the signal tests I conducted. In the meanwhille, I got my simulink model running, I have attached here for future references.
Once again, I really apprecaite your effort. Have a very very nice weekend.
Kind regards.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Signals에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by