在MATLAB中想要画一个sin函数是很容易的,比如:首先定义t = 0:0.01:10,然后画出y = sin(2*pi*t)就可以了,最多再加相角啊之类的参数,但如果在C语言中应该如何自己制造一个sin函数呢?
应该借鉴数字信号处理里的抽样思想:想生成函数x(t) = a*sin(2*pi*f0*t+ψ),就应该考虑到抽样定理:以等时间间隔进行抽样,即x[n] = x[n*Ts] 其中Ts = 1/fs(fs是抽样频率)。这时候想生成的函数x(t)就变成了x(t) = x(n*Ts) = x(n) = a*sin(2*pi*f0*n/fs+ψ) = a*sin(w*n+ψ),其中w是数字角频率,这就将模拟时间信号转化成了数字信号。
举个例子,比如想生成函数y = sin(20*pi*t),用matlab直接生产的图形如下所示(取t=0:0.001:1)
matlab程序为
t = 0:0.001:1;
y = sin(20*pi*t);
plot(t,y);
如果想用C语言来实现怎么办呢?从原函数y = sin(20*pi*t)可知f0 = 10,设fs = 40,n = 0:10(这里的n都是整数)来看看,此时x(n) = sin(2*pi*f0*n/fs),matlab程序为