當前位置:編程學習大全網 - 源碼下載 - 用fftw做三維快速離散傅裏葉變換

用fftw做三維快速離散傅裏葉變換

MATLAB傅裏葉變換:  傅立葉變換的分類:傅立葉級數:將周期性連續函數變換為離散頻率點上的函數(連續)傅立葉變換:將連續函數變換為連續頻率的函數離散時間傅立葉變換:將離散函數變換為連續頻率的函數離散傅立葉變換:將有限長離散函數變換為離散頻率點上的函數其中FFT是離散傅立葉變換的快速計算方法,適用於離散信號,並且註意變換後的點數與信號的采樣點數壹致。盡管可以將信號補0,但補0不能提高頻域的分辨率。matlab中提供了函數fft做壹維的FFT。  時域譜和頻域譜是相互對應;時域的信號長度,決定頻域的采樣間隔,它們成導數關系;  時域中信號有N點,每點間隔dt,所以時域信號長度為N*dt;那麽頻譜每點的間隔就是1/(N*dt)。  傅立葉變換結果和原來信號有相同的點數,所以m=N,又第壹點壹定對應0頻率,所以頻域信號的很坐標就是(0:m-1)/(N*dt),這句就是根據這個很坐標和頻譜c,畫出頻譜plot((0:m-1)/(N*dt),c),所以在頻譜圖上,可以根據峰值的位置的橫坐標讀出對應的頻率。clearall;N=256;dt=0.02;n=0:N-1;t=n*dt;x=sin(2*pi*t);m=N;a=zeros(1,m);b=zeros(1,m);fork=0:m-1 forii=0:N-1 a(k+1)=a(k+1)+2/N*x(ii+1)*cos(2*pi*k*ii/N); b(k+1)=b(k+1)+2/N*x(ii+1)*sin(2*pi*k*ii/N); endc(k+1)=sqrt(a(k+1)^2+b(k+1)^2);endsubplot(211);plot(t,x);title('原始信號'),xlabel('時間/t');f=(0:m-1)/(N*dt);subplot(212);plot(f,c);holdontitle('Fourier');xlabel('頻率/HZ');ylabel('振幅');ind=find(c==max(c),1,'first');%尋找最到值的位置x0=f(ind);%根據位置得到橫坐標(頻率)y0=c(ind);%根據位置得到縱坐標(幅度)plot(x0,y0,'ro');holdofftext(x0+1,y0-0.1,num2str(x0,'頻率=%f'));

  • 上一篇:在windows系統中,常見的文件類型主要由哪幾種?
  • 下一篇:阿蘭圖靈簡介
  • copyright 2024編程學習大全網