matlab 使用定时器画连续正弦波信号

Posted 胡刚2021

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了matlab 使用定时器画连续正弦波信号相关的知识,希望对你有一定的参考价值。

这一节在 matlab 初见定时器 的基础上做一个连续信号发生器。

1.定义global a ,作为正弦曲线的初始相位

2.修改原来的定时器回调函数

function my_callback_fcn(hObject, eventdata, handles)
    Fs=500;%采样频率是500Hz
    T=1;%时间是1秒
    dt=1.0/Fs;%step等于 1/500
    N=T/dt;%数组的个数为N
    t=linspace(0, T, N);%生成一个数组[0, 0.002, 0.004, 0.006,...,0.998, 1.000]
    global a
    y1=10*sin(2*pi* 5 *t + a);%生成频率为5Hz,幅值为10,时间为1秒的正弦波
    a = a+0.5;
    plot(t, y1);


运行结果

解决办法如下:


这样就不会再弹出第二个窗口了

关键代码如下:

global a 
a=0;
global mytimer
mytimer=timer('Period',1,'ExecutionMode','fixedDelay');
mytimer.TimerFcn=@my_callback_fcn;

function my_callback_fcn(hObject, eventdata, handles)
    Fs=500;%采样频率是500Hz
    T=1;%时间是1秒
    dt=1.0/Fs;%step等于 1/500
    N=T/dt;%数组的个数为N
    t=linspace(0, T, N);%生成一个数组[0, 0.002, 0.004, 0.006,...,0.998, 1.000]
    global a
    y1=10*sin(2*pi* 5 *t + a);%生成频率为5Hz,幅值为10,时间为1秒的正弦波
    a = a+0.5;
    plot(t, y1);

function pushbutton1_Callback(hObject, eventdata, handles)
    ts=timerfind; 
    if length(ts)>0 
       stop(ts); 
    end 
    global mytimer;
    start(mytimer);
    
function pushbutton2_Callback(hObject, eventdata, handles)
    ts=timerfind; 
    if length(ts)>0 
       stop(ts); 
       delete(ts); 
     end 

以上是关于matlab 使用定时器画连续正弦波信号的主要内容,如果未能解决你的问题,请参考以下文章

LabVIEW软件中,正弦信号与正弦波的区别

正弦信号怎么变成方波信号,需要怎么处理?

[Matlab]在信号调幅过程中用方波进行调幅还是正弦波?为啥?

正弦波信号发生器(离散采样)

matlab 生成正弦波

正弦波转换为方波