傅里叶变换是信号分析的根基,当初自己花了3个多星期才将傅里叶变换和信号分析大致掌握,当然走了许多弯路,以下是我整理的两篇对理解傅里叶变换非常有用的文章,应该说,如果你能静心研究至少2个星期,你将完全掌握傅里叶变换和信号分析,相信我,别想着一天就能掌握,至少需要2个星期(也可能是我比较愚笨,衰/(ㄒoㄒ)/~~)。
不建议学习信号分析的同学一上来就直接看信号分析这类书,因为这类书主要偏向公式推导和公式应用,并没有讲何为傅里叶变换,为什么要进行傅里叶变换以及这样变换的原因等等。作为工科生,我们是跟实际世界打交道的,因此,==对于我们使用的每一个公式,都应该有其物理意义==。就像是大学物理或高中物理里面的公式一样,每个参数都对于一个物理概念。这样我们才不会陷入死记公式的怪圈。因此,先在不看任何数学公式的情况下理解傅里叶分析,然后再掌握公式。这才是工科生学习的方法。
知乎上有位作者写了一篇非常好的文章,从物理上图文并茂的展示了什么是傅里叶变换,其中的思想对我们工科学生非常有启发意义。我的文章结合物理和数学两方面阐述了傅里叶变换,从模拟信号到离散信号之间一系列完备的理论支撑。如果你能潜心研究这两篇文章,90%能掌握傅里叶变换和信号分析,做到从物理到理论上游刃有余。
学习过程:
先看知乎,再看本人的文章,最后一些细节参考《数字信号处理教程》—程佩青[著]这本书,只需看前四章,如果这个过程下来你还没理解和掌握傅里叶变换,你来掐死我。
知乎:
傅里叶分析之掐死教程(完整版)更新于2014.06.06
目的:让读者在不看任何数学公式的情况下理解傅里叶分析
http://zhuanlan.zhihu.com/wille/19763358
我的文章:
数字信号处理中离散傅里叶变换的物理意义
目的:从物理和数学两方面全面掌握傅里叶变换和信号分析
http://wenku.baidu.com/view/71a4d90c84868762cbaed567
我的文章中的程序附录如下:
附录程序一
m =2;
t= -m*pi:0.1:m*pi;
yy1 = sin(t);
yy2 = (1/3)*sin(t*3);
yy3 = (1/5)*sin(t*5);
yy4 = (1/7)*sin(t*7);
yy5 = (1/9)*sin(t*9);
yy6 = (1/11)*sin(t*11);
y1 = (4/pi)*yy1;
y2 = (4/pi)*( yy1+yy2 );
y3 = (4/pi)*( yy1+yy2+yy3 );
y4 = (4/pi)*( yy1+yy2+yy3+yy4 );
y5 = (4/pi)*( yy1+yy2+yy3+yy4+yy5 );
y6 = (4/pi)*( yy1+yy2+yy3+yy4+yy5+yy6 );
subplot(3,2,1);
plot(t,y1);
xlim([ -m*pi m*pi]);
title('n = 1');
subplot(3,2,2);
plot(t,y2);
xlim([ -m*pi m*pi]);
title('n = 3');
subplot(3,2,3);
plot(t,y3);
xlim([ -m*pi m*pi]);
title('n = 5');
subplot(3,2,4);
plot(t,y4);
xlim([ -m*pi m*pi]);
title('n = 7');
subplot(3,2,5);
plot(t,y5);
xlim([ -m*pi m*pi]);
title('n = 9');
subplot(3,2,6);
plot(t,y6);
xlim([ -m*pi m*pi]);
title('n = 11');
附录程序二
fs=25;
N=128;%采样频率和数据点数
n=0:N-1;t=n/fs;%时间序列
x1=0.5*sin(2*pi*10*t)+1*sin(2*pi*5*t); %信号
[r,c]=size(t);
x2 = rand(r,c);
x = x1 +x2;
subplot(3,1,1);
plot(t,x1);
title('x1=0.5*sin(2*pi*10*t)+1*sin(2*pi*5*t)');
subplot(3,1,2);
plot(t,x2);
title('x2 = rand();');
subplot(3,1,3);
plot(t,x);
title( 'x = x1=0.5*sin(2*pi*10*t)+1*sin(2*pi*5*t) + rand()' );
figure
y=fft(x,N);%对信号进行快速Fourier变换
mag=abs(y);%求得Fourier变换后的振幅
f=n*fs/N;%频率序列
y1 = fft(x1,N);
mag1=abs(y1);
subplot(2,1,1),plot(f,mag1);
xlabel('频率/Hz');
ylabel('振幅');title('N=128, fs = 25, 未添加噪声');grid on;
subplot(2,1,2),plot(f,mag);%绘出随频率变化的振幅
xlabel('频率/Hz');
ylabel('振幅');title('N=128, fs = 25, 添加噪声');grid on;
附录程序三
clear;
clc;
fs=3000;
N=512;%采样频率和数据点数
n=0:N-1;t=n/fs;%时间序列
x=(1+sin(2*pi*100*t)).*sin(2*pi*600*t); %信号
y=fft(x,N);%对信号进行快速Fourier变换
mag=abs(y);%求得Fourier变换后的振幅
f=n*fs/N;%频率序列
subplot(2,1,1),plot(f,mag);%绘出随频率变化的振幅
xlabel('频率/Hz');
ylabel('振幅 X(k)');title('N=512 , fs = 3000HZ ');grid on;
subplot(2,1,2),plot(f(1:N/2),mag(1:N/2));%绘出Nyquist频率之前随频率变化的振幅
xlabel('频率/Hz');
ylabel('振幅 X(k)');title('Nyquist图幅值');grid on;
附录程序四
clear;
clc;
fs=30;%采样频率
N=128;%采样频率和数据点数
n=0:N-1;t=n/fs;%时间序列
x=0.5*sin(2*pi*10*t)+1*sin(2*pi*5*t); %原始时域信号
y=fft(x,N);%对信号进行快速Fourier变换
mag=abs(y);%求得Fourier变换后的振幅
f=n*fs/N;%频率序列
subplot(2,1,1),plot(f,mag);%绘出随频率变化的振幅
xlabel('频率/Hz');
ylabel('振幅');title('N=128');grid on;
subplot(2,1,2),plot(f(1:N/2),mag(1:N/2));%绘出Nyquist频率之前随频率变化的振幅
xlabel('频率/Hz');
ylabel('振幅');title('N=128');grid on;
转载请注明作者和出处:http://blog.csdn.net/holamirai,未经允许请勿用于商业用途