fun=inline(‘abs(t)<=1.*(1-abs(t)).*exp(-j*w*t)’); w=linspace(-6*pi,6*pi,512); N=length(w);F=zeros(1,N); for k=1:N F(k)=quadl(fun,-1,1,[],[],w(k)); end Plot(w,abs(F)); xlabel(‘\omega’);ylabel(‘F(j\omega)’);
时间: 2023-06-10 14:05:54 浏览: 114
这是一段 MATLAB 代码,实现了对函数 $f(t)=\mathrm{rect}(t)\cdot e^{-j\omega t}$ 的 Fourier 变换的数值求解,并绘制了其频谱图。
具体来说,代码中:
- 第一行定义了一个函数句柄 `fun`,表示 $f(t)$ 在时域的表达式;
- 第二行生成了一个长度为 $512$ 的频域采样点序列 `w`,范围为 $[-6\pi,6\pi]$;
- 第三行计算了 `w` 上 $f(t)$ 的 Fourier 变换 $F(j\omega)$,使用了 MATLAB 内置的积分求解函数 `quadl`;
- 第四行绘制了 `F(jw)` 的幅度谱,即 $|F(j\omega)|$ 随着 $\omega$ 变化的曲线;
- 最后两行为图像添加了横纵坐标的标签。
需要注意的是,代码中的 `rect` 表示矩形函数,即
$$\mathrm{rect}(t) = \begin{cases}1, & |t|\leq 1/2, \\ 0, & |t|>1/2.\end{cases}$$
因此,$f(t)$ 仅在 $|t|\leq 1/2$ 的区间内有值,其余时刻为 $0$。其 Fourier 变换 $F(j\omega)$ 的表达式为:
$$F(j\omega) = \int_{-\infty}^\infty f(t) e^{-j\omega t} \,\mathrm{d}t = \int_{-1/2}^{1/2} e^{-j\omega t} \,\mathrm{d}t = \frac{\sin(\frac{1}{2}\omega)}{\frac{1}{2}\omega}.$$
因此,$|F(j\omega)|$ 的图像应当在 $\omega=0$ 处取到最大值 $1$,在 $\omega=\pm\pi$ 处出现第一次零点,之后在每个 $\omega=k\pi$ 处均出现一个零点。
阅读全文