青青草免费线看线看|啊在车上停不下来了|国产少女免费观看电视剧|仑乱88MAV|精品老司机在线观看视频|国产一区二区三区高清免费视频|在线观看免费777av

見下面 求用C語言實現FFT變換的程序

【見下面 求用C語言實現FFT變換的程序】

見下面 求用C語言實現FFT變換的程序


你好,這是我的回答,希望可以幫到你 。1)結果討論一,如果對信號進行同樣點數N的FFT變換,采樣頻率fs越高,則可以分析越高頻的信號;與此同時,采樣頻率越低,對于低頻信號的頻譜分辨率則越好 。二,假設采樣點不在正弦信號的波峰、波谷、以及0電壓處,頻譜則會產生泄露(leakage) 。三,對于同樣的采樣率fs,提高FFT的點數N,則可提高頻譜的分辨率 。四,如果采樣頻率fs小于2倍信號頻率2*fs(奈圭斯特定理),則頻譜分析結果會出錯 。五,對于(二)中泄露現象,可以通過在信號后面補零點解決 。2)程序及注解如下%清除命令窗口及變量clc;clear all;%輸入f、N、T、是否補零(補幾個零)f=input('Input frequency of the signal: f\n');N=input('Input number of pointsl: N\n');T=input('Input sampling time: T\n');flag=input('Add zero too sampling signal or not? yes=1 no=0\n');if(flag) ZeroNum=input('Input nmber of zeros\n');else ZeroNum=0;end %生成信號,signal是原信號 。signal為采樣信號 。fs=1/T;t=0:0.00001:T*(N+ZeroNum-1);signal=sin(2*pi*f*t); t2=0:T:T*(N+ZeroNum-1);signal2=sin(2*pi*f*t2);if (flag) signal2=[signal2 zeros(1, ZeroNum)];end%畫出原信號及采樣信號 。figure;subplot(2,1,1);plot(t,signal);xlabel('Time(s)');ylabel('Amplitude(volt)');title('Singnal');hold on;subplot(2,1,1);stem(t2,signal2,'r');axis([0 T*(N+ZeroNum) -1 1]);%作FFT變換,計算其幅值,歸一化處理,并畫出頻譜 。Y = fft(signal2,N);Pyy = Y.* conj(Y) ;Pyy=(Pyy/sum(Pyy))*2;f=0:fs/(N-1):fs/2;4subplot(2,1,2);bar(f,Pyy(1:N/2));xlabel('Frequency(Hz)');ylabel('Amplitude');title('Frequency compnents of signal');axis([0 fs/2 0 ceil(max(Pyy))])grid on;祝你好運!我可以幫助你,你先設置我最佳答案后,我百度Hii教你 。

    猜你喜歡