数字信号处理中离散傅里叶变换的物理意义---即如何理解离散傅里叶变换

    傅里叶变换是信号分析的根基,当初自己花了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,未经允许请勿用于商业用途

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值