從傅立葉級數到傅立葉變換
阿新 • • 發佈:2019-01-13
程式碼如下:
clear close all clc dt=0.001; t=0:dt:20; ft=10*sin(10*t)+2*cos(10*t)+5*sin(5*t)+3*cos(5*t)+sin(2*t)+cos(2*t); figure(1) plot(t,ft,'.b'); xlabel('t'); ylabel('y'); title('f(t)=10*sin(10*t)+2*cos(10*t)+5*sin(5*t)+3*cos(5*t)+sin(2*t)+cos(2*t)'); w=zeros(1,20); %% 計算係數 for i1=1:length(w) k1=0; for t1=0:dt:20 k1=k1+1; w(i1)=w(i1)+ft(k1)*exp(-i1*t1*i)/(20/dt); end end w=w*2; figure(2) subplot(1,3,1) fz=sqrt(real(w).^2+imag(w).^2); plot(1:20,fz); hold on plot([10,5,2],fz([10,5,2]),'ro'); xlabel('t'); ylabel('y'); title('幅值'); subplot(1,3,2) re=real(w); plot(1:20,re); hold on plot([10,5,2],re([10,5,2]),'ro'); xlabel('t'); ylabel('y'); title('實部'); subplot(1,3,3) ima=-imag(w); plot(1:20,ima); hold on plot([10,5,2],ima([10,5,2]),'ro'); xlabel('t'); ylabel('y'); title('虛部'); %% 還原 ft1=zeros(1,length(ft)); k1=0; for t1=0:dt:20 k1=k1+1; for w1=1:20 ft1(k1)=ft1(k1)+w(w1)*exp(i*w1*t1); end end figure(3) plot(t,ft,'.b'); hold on plot(t,real(ft1),'r','linewidth',1.5) xlabel('x') ylabel('y') title('傅立葉逆變換'); legend('原函式影象','傅立葉逆變換結果');