用MATLAB实现连续时间信号的采样及重构,以f(t)=Sa(t)=(sin t)/t为例,以过采样的情况, 绘出原信号、采样信号、重构信号的时域波形图。
时间: 2024-03-16 13:41:29 浏览: 89
好的,我来为您提供一份MATLAB代码来实现连续时间信号的采样及重构。
首先,我们需要定义信号f(t),这里以Sa(t) = (sin t)/t为例。然后,我们需要定义采样频率fs和采样时间间隔T。
接下来,我们以过采样的情况为例,定义采样倍率M=10,即采样频率为fs=10/T。
然后,我们按照采样频率和采样倍率进行采样,并对采样信号进行重构。我们使用线性插值法进行重构,即在每个采样点之间使用线性函数插值。最后,我们将原始信号、采样信号和重构信号的时域波形图绘制在同一张图中,以便比较它们的差异。
下面是完整的MATLAB代码:
```matlab
% 定义信号
t = -10:0.01:10;
f = sinc(t);
% 定义采样频率和时间间隔
T = 0.1;
fs = 10/T;
% 定义采样倍率
M = 10;
% 进行采样
ts = 0:T/M:10;
fsa = sinc(ts);
% 进行重构
tr = 0:T/100:10;
fra = zeros(size(tr));
for ii = 1:length(ts)-1
idx = tr>=ts(ii) & tr<ts(ii+1);
fra(idx) = (tr(idx)-ts(ii))/(ts(ii+1)-ts(ii))*fsa(ii+1) + (ts(ii+1)-tr(idx))/(ts(ii+1)-ts(ii))*fsa(ii);
end
% 绘制时域波形图
figure;
plot(t,f,'LineWidth',2);
hold on;
stem(ts,fsa,'r','LineWidth',1.5,'MarkerSize',8);
plot(tr,fra,'g','LineWidth',2);
hold off;
legend('原始信号','采样信号','重构信号');
xlabel('时间 t');
ylabel('f(t)');
title('原始信号、采样信号和重构信号的时域波形图');
```
运行上述代码,即可得到原始信号、采样信号和重构信号的时域波形图。
注意:这里的重构过程只是一种基本的线性插值方法,实际情况中可能需要更复杂的插值方法来获得更好的重构效果。此外,过采样的情况下会带来更高的计算成本和存储成本,因此需要权衡采样率和信号质量之间的关系。
阅读全文