dsp.SineWave in Matlab function block not generating sine wave on the scope

5 views (last 30 days)
When the plot function is called it generates the desired wave. However when a scope is used to observe this , constant values are rather observed. The same output is observed when the dispaly block is used - all values are generated at once even for a single step. What could I be doing wrongly here?
It also takes a long time to complete simulation when used in Simulink compared to Matlab.
See below the code.
function y = fcn()
sine1 = dsp.SineWave('Amplitude',1,'Frequency',60,'PhaseOffset',0,'SamplesPerFrame',1000,'OutputDataType','double');
y = sine1();
The idea is to later make the amplitude an argument(input) to the block so it can be varied.The application will be to make a closed loop control that uses over modulaton of SPWM..

Answers (1)

Abderrahim. B
Abderrahim. B on 28 Jul 2022
Hi!
Why do not you use sinWave block available in dsp system simulink library instead of writing a MATLAB function for that ? You will be able to change block parameters Check out the link below to learn about dsp system toolbox signal generation capabilities:
Hope this helps
  5 Comments
Sam Chak
Sam Chak on 29 Jul 2022
Hi Andrew,
Varying the amplitude of the sine wave is probably easier than you think.
This is the equation:
x(t) = Amp*[1*sin(2*pi*Freq*t)]
where you can define how the Amplitude should behave, perhaps as a function of time, t. For example, in the MATLAB Function block,
Amp = V/(1 + exp(- k*(t - t0))) + Offset.
Then, multiply Amp with the output of the Sine wave block.
Andrew
Andrew on 4 Aug 2022
Thanks Sam.
Your solution gave a clue.
Using the Sinewave block from simulink & product block together with a constant/ varying input works.

Sign in to comment.

Products


Release

R2022a

Community Treasure Hunt

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

Start Hunting!