matlab在信号实验中的运用二:信号的频域初探

我与影子孤独终老i 提交于 2020-01-29 03:28:56

傅里叶变换

时域和频域是反应一个信号的两个方面,时域刻画信号在某一时刻的幅值情况,而频域则表现信号的在某一种变化程度(频率)上的分量。
根据时域的离散与周期的不同傅里叶变换可以分成四种,时域或频域的离散对应着另一个域是周期的,而非周期则对应另一个域是连续的。

连续非周期:符号法

在matlab里使用syms可以定义符号变量,与矩阵变量不同,不需要我们手动对其值进行初始化,符号变量可以更好地刻画完整的函数(而不是以矩阵保留某一部分函数值),在函数形式变换、方程求解等等方面很方便。fourier函数可以对符号表达式进行傅里叶变换,并可以求出变换后的表达式,
以如下函数为例

syms t;
y=sin(0.5*pi*t)/(pi*t);        %2sinc(0.5t)
Y=fourier(y)                   %进行傅里叶变换
figure(1);
ezplot(y);                     %原函数
ylim([-0.5 1]);
figure(2);
ezplot(Y,[-pi,pi]);             %变换后函数

原函数:
傅里叶变换以后:
在这里插入图片描述门函数与sinc函数是一组傅里叶变换对,这是信号中常用的一组变换。可以看到matlab为我们计算了傅里叶变换后的函数表达式,如果Y=fourier(y) 不加‘;’结尾,可以在命令行输出该表达式:
在这里插入图片描述在这里插入图片描述
注意:
1、ezplot函数自变量是函数表达式,只能以表达式的形式画图;同样plot函数不能绘制函数表达式,只能绘制矩阵或是向量图
2、fourier函数只能对函数表达式进行傅里叶变换。

离散非周期:定义法

对于离散非周期时间信号(DTFT)可以根据定义
在这里插入图片描述可以看出DTFT的定义与矩阵乘法形式相同,在matlab里可以简单的实现。

n=-10:10;                         %时域离散
w=-pi:0.01*pi:pi                  %频域采样以模拟连续的情况
y=sin(0.5*pi*n)./(pi*n);          %构建函数
y(1,11)=1;                        %处理NaN点
figure;                           
stem(n,y);
z=exp(-j*n'*w);
Y=y*z;                            
figure;
plot(w,abs(Y));

在这里插入图片描述变换后如下图,横坐标为角频率w
在这里插入图片描述在这个例子中,时域没有进行采样,这是遵照定义进行的演示,实际上,可以通过比较大的频率采样来模拟连续的信号。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!