应用MATLAB实现连续信号的采样与重构,包括临界抽样频率,过抽样频率,欠抽样频率
时间: 2023-11-07 15:28:41 浏览: 106
好的,下面是MATLAB代码实现:
1. 临界抽样频率
```matlab
clc; clear;
% 设置基本参数
fm = 1;
fs = 2*fm; % 采样频率等于信号最大频率的两倍
Ts = 1/fs;
t = -1:0.001:1;
x = sinc(2*fm*t);
% 临界抽样
n = -20:20;
xn = sinc(2*fm*n*Ts);
tn = n*Ts;
figure;
stem(tn, xn, 'r'); hold on;
plot(t, x, 'b'); hold off;
title('临界抽样频率'); xlabel('t'); ylabel('x(t)');
legend('抽样信号', '原信号');
```
2. 过抽样频率
```matlab
clc; clear;
% 设置基本参数
fm = 1;
fs = 10*fm; % 采样频率大于信号最大频率的两倍
Ts = 1/fs;
t = -1:0.001:1;
x = sinc(2*fm*t);
% 过抽样
n = -200:200;
xn = sinc(2*fm*n*Ts);
tn = n*Ts;
figure;
stem(tn, xn, 'r'); hold on;
plot(t, x, 'b'); hold off;
title('过抽样频率'); xlabel('t'); ylabel('x(t)');
legend('抽样信号', '原信号');
```
3. 欠抽样频率
```matlab
clc; clear;
% 设置基本参数
fm = 1;
fs = 0.5*fm; % 采样频率小于信号最大频率的两倍
Ts = 1/fs;
t = -1:0.001:1;
x = sinc(2*fm*t);
% 欠抽样
n = -5:5;
xn = sinc(2*fm*n*Ts);
tn = n*Ts;
figure;
stem(tn, xn, 'r'); hold on;
plot(t, x, 'b'); hold off;
title('欠抽样频率'); xlabel('t'); ylabel('x(t)');
legend('抽样信号', '原信号');
```
这段代码中,我们设置了三种不同的采样频率:临界抽样频率、过抽样频率和欠抽样频率。对于每种采样频率,我们都进行了信号的采样和重构,并将抽样信号和原信号画在同一张图上进行比较。可以看到,当采样频率等于信号最大频率的两倍时,抽样信号与原信号完全一样;当采样频率大于信号最大频率的两倍时,抽样信号可以很好地重构原信号;当采样频率小于信号最大频率的两倍时,抽样信号无法很好地重构原信号。
阅读全文