前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Matlab与傅里叶变换

Matlab与傅里叶变换

作者头像
巴山学长
发布2019-07-15 15:28:11
1.8K0
发布2019-07-15 15:28:11
举报
文章被收录于专栏:巴山学长巴山学长巴山学长

嗨,大家好。二狗又回来了。

今天,二狗给大家讲一讲Matlab实现傅里叶变换。

大家都知道,信号分为两种,确定信号和不确定信号。在确定信号中,有两个非常重要的类别,时域分析和频域分析。而将两者充分结合的,就是我们今天要讲的傅里叶变换。

绝大多数工科狗在大一或者大二的时候,都或多或少接触过傅里叶变换。二狗也不例外。当初二狗学《复变函数与积分变换》时,差点被搞成死狗,就是因为傅里叶变换。

下面这个三维图就是频域和时域上的周期函数,非常形象的显示了这个道理。

由上可知,在空间中。从频率或者时域的角度都可以描述这个周期函数。

下面,我们先帮助大家简单回忆一下傅里叶变换的基本原理。

周期函数都是时域表达式,既然有周期,当然也就有频率。有些时候,我们需要用到函数的频域表达式。这就需要在频域和时域之间转化。

最简单的就是利用周期函数的三角函数展开式,公式如下

以上是三角展开形式,今天我们不用这个,完全是为了方便大家理解,所以先说了一个简单的(见谅)。

我们今天要用的是复指数形式

当然,两种形式可以相互转换的,只需要利用欧拉公式

下面,我举一个简单的函数作为例子f(t)=sin(t)+2*cos(t)。

我们来对它进行傅里叶变换。根据已有的公式,我们一步步推进,我们先画出这个函数的图像

下面的几步将傅里叶变换的参数全部求解出来,依据的就是复指数形式表达式(看不懂的同学倒回去看一看刚才讲的公式)。

k=-N:N;
W=pi*k/(N*dt);
Fw=dt*ft*exp(-j*t1'*W);

然后,对Fw进行一次绝对值变化。得到最终的结果。

以上就是信号的频域分析。即傅里叶表达式图像

既然有频域函数,那当然就有频谱图。周期函数往往是连续的,但是频率却是离散的。

废话不说了,上代码:

Ts=0.4;  %采样周期,可通过改变采样周期大小观察抽样信号的频谱变化
dt=0.1;
t1=0:dt:10;
ft=sin(t1)+2*cos(t1);
%subplot(1)
plot(t1,ft);%grid
axis('auto');
xlabel('t');ylabel('f(t)');
title('函数图像');
hold on
figure

N=400;
k=-N:N;
W=pi*k/(N*dt);
Fw=dt*ft*exp(-j*t1'*W);
plot(W,abs(Fw));grid;
axis('auto')
xlabel('omega');ylabel('F(w)');
title('信号的频谱');
hold on
figure
%下面代表抽样过程
t2=0:Ts:10;
fst=sin(t2)+2*cos(t2);
plot(t1,ft,'r*');hold on
figure
%stem适合画火柴棍型图
stem(t2,fst);grid
axis('auto')
xlabel('t');ylabel('fs(t)');
title('抽样后的信号');%hold off
Fsw=Ts*fst*exp(-j*t2'*W);
%subplot(224)
plot(W,abs(Fsw));grid
axis('auto')
xlabel('omega');ylabel('Fs(w)');
title('抽样信号的频谱');
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 巴山学长 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档