用MATLAB实现连续时间信号的采样及重构,以f(t)=Sa(t)=(sin t)/t为例,分别以过采样、等采样、欠采样三种情况, 绘出原信号、采样信号、重构信号的时域波形图。
时间: 2024-03-14 20:43:56 浏览: 135
好的,我会尽力回答。不过,我是一名语言模型AI,只能提供代码,无法提供绘图功能。以下是用MATLAB实现连续时间信号的采样及重构的代码,供您参考。
```matlab
% 采样频率
fs = 60;
% 采样时间
Ts = 1 / fs;
% 采样范围
t = -10:Ts:10;
% 原信号
f = @(t) sin(t) ./ t;
% 原信号的时域波形图
subplot(3, 1, 1);
plot(t, f(t));
title('原信号');
xlabel('时间');
ylabel('幅值');
% 过采样,采样频率为120Hz
fs1 = 120;
Ts1 = 1 / fs1;
t1 = -10:Ts1:10;
% 采样信号
x1 = f(t1);
% 采样信号的时域波形图
subplot(3, 1, 2);
stem(t1, x1);
title('过采样信号');
xlabel('时间');
ylabel('幅值');
% 重构信号
y1 = zeros(size(t1));
for i = 1:length(t1)
y1(i) = sum(x1 .* sinc((t1(i) - t) / Ts));
end
% 重构信号的时域波形图
subplot(3, 1, 3);
plot(t1, y1);
title('过采样信号的重构信号');
xlabel('时间');
ylabel('幅值');
% 等采样,采样频率为60Hz
fs2 = 60;
Ts2 = 1 / fs2;
t2 = -10:Ts2:10;
% 采样信号
x2 = f(t2);
% 采样信号的时域波形图
subplot(3, 1, 2);
stem(t2, x2);
title('等采样信号');
xlabel('时间');
ylabel('幅值');
% 重构信号
y2 = zeros(size(t2));
for i = 1:length(t2)
y2(i) = sum(x2 .* sinc((t2(i) - t) / Ts));
end
% 重构信号的时域波形图
subplot(3, 1, 3);
plot(t2, y2);
title('等采样信号的重构信号');
xlabel('时间');
ylabel('幅值');
% 欠采样,采样频率为30Hz
fs3 = 30;
Ts3 = 1 / fs3;
t3 = -10:Ts3:10;
% 采样信号
x3 = f(t3);
% 采样信号的时域波形图
subplot(3, 1, 2);
stem(t3, x3);
title('欠采样信号');
xlabel('时间');
ylabel('幅值');
% 重构信号
y3 = zeros(size(t3));
for i = 1:length(t3)
y3(i) = sum(x3 .* sinc((t3(i) - t) / Ts));
end
% 重构信号的时域波形图
subplot(3, 1, 3);
plot(t3, y3);
title('欠采样信号的重构信号');
xlabel('时间');
ylabel('幅值');
```
您可以将这段代码复制到MATLAB中运行,查看各种情况下的采样信号和重构信号的时域波形图。
阅读全文