1.抽样定理验证的Matlab 实现1.1 正弦信号的采样 (1)参考下面程序,得到50Hz 正弦信号在采样时间间隔分别为0.01s、0.002s 和0.001 时的采样信号。 fs=1000; t=0:1/fs:0.2; f0=50; x=cos(2*pi*f0*t); subplot(2,2,1);plot(t,x); n1=0:0.01:0.2; x1=cos(2*pi*f0*n1); subplot(2,2,2);stem(n1,x1); n2=0:0.005:0.2; x2=cos(2*pi*f0*n2); subplot(2,2,3);stem(n2,x2); n3=0:0.001:0.2; x3=cos(2*pi*f0*n3); subplot(2,2,4);stem(n3,x3,'.'); (2)在(1)基础上恢复正弦信号,比较那个采样间隔能较好的恢复原正弦信号。改变几个 不同的采样间隔,比较恢复信号。
时间: 2024-02-27 15:59:12 浏览: 284
正弦信号的采样与恢复
3星 · 编辑精心推荐
(1) 可以参考下面的代码:
```matlab
fs = 1000;
t = 0:1/fs:0.2;
f0 = 50;
x = cos(2*pi*f0*t);
subplot(2,2,1);
plot(t,x);
title('原始信号');
n1 = 0:0.01:0.2;
x1 = cos(2*pi*f0*n1);
subplot(2,2,2);
stem(n1,x1);
title('采样间隔0.01s');
n2 = 0:0.002:0.2;
x2 = cos(2*pi*f0*n2);
subplot(2,2,3);
stem(n2,x2);
title('采样间隔0.002s');
n3 = 0:0.001:0.2;
x3 = cos(2*pi*f0*n3);
subplot(2,2,4);
stem(n3,x3,'.');
title('采样间隔0.001s');
```
运行该代码后,会生成一个包含四个子图的图形窗口。第一个子图为原始的正弦信号,后面三个子图分别为采样间隔为0.01s、0.002s和0.001s时的采样信号。
(2) 可以参考下面的代码:
```matlab
% 采样间隔0.01s
fs1 = 1/0.01;
t1 = 0:1/fs1:0.2;
x1_recover = sinc_interp(n1,x1,t1);
err1 = norm(x-x1_recover);
% 采样间隔0.002s
fs2 = 1/0.002;
t2 = 0:1/fs2:0.2;
x2_recover = sinc_interp(n2,x2,t2);
err2 = norm(x-x2_recover);
% 采样间隔0.001s
fs3 = 1/0.001;
t3 = 0:1/fs3:0.2;
x3_recover = sinc_interp(n3,x3,t3);
err3 = norm(x-x3_recover);
% 绘图比较
subplot(2,2,1);
plot(t,x);
title('原始信号');
subplot(2,2,2);
plot(t1,x1_recover);
title(['采样间隔0.01s,误差',num2str(err1)]);
subplot(2,2,3);
plot(t2,x2_recover);
title(['采样间隔0.002s,误差',num2str(err2)]);
subplot(2,2,4);
plot(t3,x3_recover);
title(['采样间隔0.001s,误差',num2str(err3)]);
```
其中,`sinc_interp`是一个插值函数,可以通过以下代码定义:
```matlab
function y = sinc_interp(n,x,t)
% Sinc插值函数
y = zeros(size(t));
for i = 1:length(t)
y(i) = sum(x.*sinc((t(i)-n)*pi));
end
end
```
运行该代码后,会生成一个包含四个子图的图形窗口。第一个子图为原始的正弦信号,后面三个子图分别为采样间隔为0.01s、0.002s和0.001s时的恢复信号。每个子图的标题中还显示了恢复误差。从实验结果来看,采样间隔为0.001s时能够较好地恢复原正弦信号。
阅读全文