正弦函數及其FFT變換(一)

        在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);

        畫出來的圖形如下圖:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章