作者:盛夏的猫宁
来源:SegmentFault 思否社区
傅里叶分析
公式法
下例 是将振幅为1的5Hz正弦波和振幅为0.5的10Hz正弦波相加之后进行傅里叶分析。
clear allN=512;dt=0.02;n=0:N-1;t=n*dt;x=sin(2*pi*5*t)+0.5*sin(2*pi*10*t);%生成和信号%傅里叶变换m = floor(N/2)+1;a=zeros(1,m);b=zeros(1,m);for k=0:m-1 for ii=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); end c(k+1)=sqrt(a(k+1).^2+b(k+1).^2);end%傅里叶逆变换if(mod(N,2) ~=1) a(m)=a(m)/2;endfor ii=0:N-1 xx(ii+1)=a(1)/2; for k=1:m-1 xx(ii+1)=xx(ii+1)+a(k+1)*cos(2*pi*k*ii/N)+b(k+1)*sin(2*pi*k*ii/N); endend%绘图subplot(3,1,1),plot(t,x,'LineWidth',2);title('原始信号'),xlabel('时间/s');subplot(3,1,2),plot((0:m-1)/(N*dt),c,'LineWidth',2);title('傅里叶变换'),xlabel('频率/Hz');subplot(3,1,3),plot((0:N-1)*dt,xx,'LineWidth',2);ti