已知f(t)= u(t), f(t)= f(t)ej5nt, f2(t)= f(t)e-j5nt, (1) 用matlab在同一个图中画它们的时间信号; (2) 用matlab在同一个图中画它们的幅度谱
时间: 2024-05-24 17:13:48 浏览: 84
matlab把fft的函数进行封装,能够得到信号的幅度和相位
答案:
(1) MATLAB 代码:
t = linspace(-1, 1, 1000);
f_t = heaviside(t);
f_t_2 = f_t.*exp(1j*5*pi*t);
f_t_3 = f_t_2.*exp(-1j*5*pi*t);
plot(t, f_t, t, real(f_t_2), t, real(f_t_3));
xlabel('Time (s)');
ylabel('Amplitude');
legend('f(t)', 'f_2(t)', 'f_3(t)');
解释:
在 MATLAB 中,使用 linspace 函数生成从 -1 到 1 的等距向量 t,长度为 1000。利用 heaviside 函数生成 f(t) = u(t) 的时间信号,即在 t=0 时从 0 跳跃到 1。使用 exp 函数生成 f(t) 的频谱 f_2(t) 和 f2(t) 的频谱 f_3(t)。使用 plot 函数在同一个图中画出三个函数的时间信号。
(2) MATLAB 代码:
t = linspace(-1, 1, 1000);
f_t = heaviside(t);
f_t_2 = f_t.*exp(1j*5*pi*t);
f_t_3 = f_t_2.*exp(-1j*5*pi*t);
F = fftshift(fft(f_t));
F_2 = fftshift(fft(f_t_2));
F_3 = fftshift(fft(f_t_3));
f = linspace(-500, 499, 1000);
plot(f, abs(F), f, abs(F_2), f, abs(F_3));
xlabel('Frequency (Hz)');
ylabel('Magnitude');
legend('F(f)', 'F_2(f)', 'F_3(f)');
解释:
在 MATLAB 中,使用 linspace 函数生成从 -1 到 1 的等距向量 t,长度为 1000。利用 heaviside 函数生成 f(t) = u(t) 的时间信号,即在 t=0 时从 0 跳跃到 1。使用 exp 函数生成 f(t) 的频谱 f_2(t) 和 f2(t) 的频谱 f_3(t)。使用 fft 函数计算三个函数的离散傅里叶变换,并使用 fftshift 函数将频谱移动至中心。使用 linspace 函数生成从 -500 到 499 的等距向量 f,长度为 1000,代表频率。使用 abs 函数计算三个频谱的幅度谱,并使用 plot 函数在同一个图中画出三个幅度谱。
阅读全文