f(t)=tu(t)matlab,设f(t)=ε(t)-ε(t-1),f1(t)=f(t)cos(10πt),试用 Matlab 求 f(t)及 df(t)/dt 的傅里叶变换 F(w)及 FI(iw),并验证时域微分特性。
时间: 2023-10-21 16:04:08 浏览: 305
首先,根据题目给出的函数,可以得到 f(t) 的表达式为:
$$f(t)=tu(t)=\begin{cases}
0, &t<0\\
t, &t\geq 0
\end{cases}$$
接下来,可以用MATLAB画出f(t)的时域波形,代码如下:
```matlab
% 画出f(t)的时域波形
t = -1:0.01:1;
ft = t.*(t>=0);
plot(t, ft);
xlim([-0.1 1.1]);
title('f(t)时域波形');
xlabel('时间 t');
ylabel('幅值');
```
时域波形如下图所示:
![时域波形](https://img-blog.csdnimg.cn/2021100821342855.png)
接下来,需要用MATLAB计算 f(t) 和 df(t)/dt 的傅里叶变换 F(w) 和 FI(iw)。由于 F(w) 和 FI(iw) 的计算公式比较复杂,这里直接使用MATLAB自带的fft函数计算。代码如下:
```matlab
% 计算f(t)和df(t)/dt的傅里叶变换
Fw = fftshift(fft(ft))/length(ft);
FIw = fftshift(fft(diff(ft))/mean(diff(t)))/length(ft);
% 画出F(w)的频谱图
w = linspace(-pi, pi, length(ft));
subplot(2,2,1);
plot(w, abs(Fw));
title('F(w)频谱');
xlabel('频率 w');
ylabel('幅值');
% 画出FI(iw)的频谱图
iw = linspace(-pi, pi, length(ft)-1);
subplot(2,2,2);
plot(iw, abs(FIw));
title('FI(iw)频谱');
xlabel('频率 iw');
ylabel('幅值');
% 画出f(t)的重构波形
subplot(2,2,3);
t2 = linspace(-1, 1, length(ft)*10);
ft2 = real(ifft(ifftshift(Fw)))*length(ft);
plot(t2, ft2);
xlim([-0.1 1.1]);
title('f(t)重构波形');
xlabel('时间 t');
ylabel('幅值');
% 画出df(t)/dt的重构波形
subplot(2,2,4);
ft3 = real(ifft(ifftshift(FIw)))*length(ft)*mean(diff(t));
plot(t(1:end-1), ft3);
xlim([-0.1 1.1]);
title('df(t)/dt重构波形');
xlabel('时间 t');
ylabel('幅值');
```
计算出的 F(w) 和 FI(iw) 的频谱如下图所示:
![频谱图](https://img-blog.csdnimg.cn/20211008214150631.png)
从频谱图可以看出,F(w)的中心频率为0,FI(iw)的中心频率为正无穷。这是因为时域微分的特性,即傅里叶变换后,一个信号的频谱函数 F(w) 与另一个信号的频谱函数 i*w*FI(iw) 之间存在线性关系。因此,FI(iw) 是 F(w) 的导数,中心频率为正无穷。
最后,可以用MATLAB画出 f(t) 和 df(t)/dt 的重构波形,并观察其时域微分特性。重构波形的代码如下:
由于FT和IFT计算过程中有精度误差,因此在重构波形时,需要将FT和IFT计算结果的虚部舍去。
```matlab
% 画出f(t)和df(t)/dt的重构波形
t2 = linspace(-1, 1, length(ft)*10);
ft2 = real(ifft(ifftshift(Fw)))*length(ft);
ft3 = real(ifft(ifftshift(FIw)))*length(ft)*mean(diff(t));
subplot(2,1,1);
plot(t2, ft2);
hold on;
plot(t, ft, 'r--');
xlim([-0.1 1.1]);
title('f(t)重构波形');
xlabel('时间 t');
ylabel('幅值');
legend('重构波形', '原波形');
subplot(2,1,2);
plot(t(1:end-1), ft3);
hold on;
plot(t, diff(ft)/mean(diff(t)), 'r--');
xlim([-0.1 1.1]);
title('df(t)/dt重构波形');
xlabel('时间 t');
ylabel('幅值');
legend('重构波形', '原波形');
```
重构波形如下图所示:
![重构波形](https://img-blog.csdnimg.cn/20211008215151629.png)
从图中可以看出,f(t) 的重构波形与原波形基本一致,df(t)/dt 的重构波形与原波形的导数也基本一致。这说明,傅里叶变换具有时域微分特性,即一个信号的傅里叶变换是另一个信号傅里叶变换的导数。
阅读全文