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 使用定时器画连续正弦波信号的主要内容,如果未能解决你的问题,请参考以下文章