在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程序爲
clear all;
f0=10;
fs=40;
N=10;
n=0:N-1;
y=sin(2*pi*n*f0/fs);
畫出來的圖形如下圖: