编写matlab代码 将原始信号分别修改为抽样函数 Sa(t)、正弦信号 sin(20*pi*t)+cos(40*pi*t)、 指数信号 e-2tu(t)时,在不同采样频率的条件下,观察对应采样信号的时域和 频域特性,以及重构信号与误差信号的变化。
时间: 2024-02-23 16:03:32 浏览: 101
好的,下面是一个简单的 Matlab 代码,可以生成并观察这三种信号在不同采样频率下的时域和频域特性,以及重构信号和误差信号的变化。请在 Matlab 中新建一个 .m 文件,将以下代码复制粘贴进去,保存后直接运行即可。
```matlab
clear all;
close all;
clc;
% 生成原始信号
t = linspace(0, 1, 1000);
Sa_t = square(2*pi*10*t); % 抽样函数 Sa(t)
sin_t = sin(20*pi*t) + cos(40*pi*t); % 正弦信号 sin(20*pi*t)+cos(40*pi*t)
exp_t = exp(-2*t).*heaviside(t); % 指数信号 e-2tu(t)
% 画出原始信号的时域和频域图像
figure(1);
subplot(3,2,1);
plot(t, Sa_t);
title('Original Signal: Sa(t)');
xlabel('Time');
ylabel('Amplitude');
subplot(3,2,2);
plot(abs(fft(Sa_t)));
title('Frequency Spectrum: Sa(t)');
xlabel('Frequency');
ylabel('Amplitude');
subplot(3,2,3);
plot(t, sin_t);
title('Original Signal: sin(20\pit)+cos(40\pit)');
xlabel('Time');
ylabel('Amplitude');
subplot(3,2,4);
plot(abs(fft(sin_t)));
title('Frequency Spectrum: sin(20\pit)+cos(40\pit)');
xlabel('Frequency');
ylabel('Amplitude');
subplot(3,2,5);
plot(t, exp_t);
title('Original Signal: e^{-2t}u(t)');
xlabel('Time');
ylabel('Amplitude');
subplot(3,2,6);
plot(abs(fft(exp_t)));
title('Frequency Spectrum: e^{-2t}u(t)');
xlabel('Frequency');
ylabel('Amplitude');
% 对原始信号进行采样和重构,观察误差信号
Fs = [20, 50, 100, 200, 500]; % 不同采样频率
for i=1:length(Fs)
% 采样
Ts = 1/Fs(i);
n = 0:Ts:1;
Sa_n = square(2*pi*10*n); % 抽样函数 Sa(t)
sin_n = sin(20*pi*n) + cos(40*pi*n); % 正弦信号 sin(20*pi*t)+cos(40*pi*t)
exp_n = exp(-2*n).*heaviside(n); % 指数信号 e-2tu(t)
% 重构
Sa_r = interp1(n, Sa_n, t, 'spline');
sin_r = interp1(n, sin_n, t, 'spline');
exp_r = interp1(n, exp_n, t, 'spline');
% 画出采样信号、重构信号和误差信号的时域和频域图像
figure(2);
subplot(length(Fs), 3, i*3-2);
stem(n, Sa_n);
title(['Sampled Signal: Sa(t), Fs = ', num2str(Fs(i)), 'Hz']);
xlabel('Time');
ylabel('Amplitude');
subplot(length(Fs), 3, i*3-1);
plot(t, Sa_r);
title('Reconstructed Signal');
xlabel('Time');
ylabel('Amplitude');
subplot(length(Fs), 3, i*3);
plot(t, Sa_t-Sa_r);
title('Error Signal');
xlabel('Time');
ylabel('Amplitude');
figure(3);
subplot(length(Fs), 3, i*3-2);
stem(n, sin_n);
title(['Sampled Signal: sin(20\pit)+cos(40\pit), Fs = ', num2str(Fs(i)), 'Hz']);
xlabel('Time');
ylabel('Amplitude');
subplot(length(Fs), 3, i*3-1);
plot(t, sin_r);
title('Reconstructed Signal');
xlabel('Time');
ylabel('Amplitude');
subplot(length(Fs), 3, i*3);
plot(t, sin_t-sin_r);
title('Error Signal');
xlabel('Time');
ylabel('Amplitude');
figure(4);
subplot(length(Fs), 3, i*3-2);
stem(n, exp_n);
title(['Sampled Signal: e^{-2t}u(t), Fs = ', num2str(Fs(i)), 'Hz']);
xlabel('Time');
ylabel('Amplitude');
subplot(length(Fs), 3, i*3-1);
plot(t, exp_r);
title('Reconstructed Signal');
xlabel('Time');
ylabel('Amplitude');
subplot(length(Fs), 3, i*3);
plot(t, exp_t-exp_r);
title('Error Signal');
xlabel('Time');
ylabel('Amplitude');
end
```
这个代码将生成多个图像窗口,包括原始信号的时域和频域图像,以及不同采样频率下的采样信号、重构信号和误差信号的时域图像。您可以根据需要对代码进行修改和扩展。
阅读全文