傅里叶变换
时域和频域是反应一个信号的两个方面,时域刻画信号在某一时刻的幅值情况,而频域则表现信号的在某一种变化程度(频率)上的分量。
根据时域的离散与周期的不同傅里叶变换可以分成四种,时域或频域的离散对应着另一个域是周期的,而非周期则对应另一个域是连续的。
连续非周期:符号法
在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
在这个例子中,时域没有进行采样,这是遵照定义进行的演示,实际上,可以通过比较大的频率采样来模拟连续的信号。