Filter löschen
Filter löschen

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

2 Ansichten (letzte 30 Tage)
Andrew am 28 Jul. 2022
Kommentiert: Andrew am 4 Aug. 2022
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..

Antworten (1)

Abderrahim. B
Abderrahim. B am 28 Jul. 2022
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 Kommentare
Sam Chak
Sam Chak am 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 am 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.

Melden Sie sich an, um zu kommentieren.




Community Treasure Hunt

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

Start Hunting!

Translated by