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 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值