用MATLAB编程实现对一个正弦连续时间信号的抽样,产生并显示连续正弦信号及其抽样周期比奈奎斯特抽样周期高、相等、低三种情况下的抽样形式
时间: 2024-04-21 16:30:14 浏览: 149
下面是MATLAB代码实现,其中正弦信号的频率为5 Hz,采样频率分别为10 Hz(低采样率)、15 Hz(等于奈奎斯特采样率)、20 Hz(高采样率):
```matlab
% 设置信号参数
f = 5; % 正弦信号频率
Fs_low = 10; % 低采样率
Fs_eq = 15; % 奈奎斯特采样率
Fs_high = 20; % 高采样率
t = 0:0.0001:1; % 时间范围为0到1秒,每个采样周期0.0001秒
% 生成正弦信号
x = sin(2*pi*f*t);
% 低采样率下抽样
Ts_low = 1/Fs_low; % 采样周期
n_low = 0:Ts_low:1; % 采样时刻
y_low = sin(2*pi*f*n_low); % 抽样
% 奈奎斯特采样率下抽样
Ts_eq = 1/Fs_eq; % 采样周期
n_eq = 0:Ts_eq:1; % 采样时刻
y_eq = sin(2*pi*f*n_eq); % 抽样
% 高采样率下抽样
Ts_high = 1/Fs_high; % 采样周期
n_high = 0:Ts_high:1; % 采样时刻
y_high = sin(2*pi*f*n_high); % 抽样
% 绘制图像
subplot(2,2,1);
plot(t,x);
title('原始信号');
xlabel('时间 (秒)');
ylabel('幅值');
grid on;
subplot(2,2,2);
stem(n_low,y_low);
title('低采样率下抽样');
xlabel('时间 (秒)');
ylabel('幅值');
grid on;
subplot(2,2,3);
stem(n_eq,y_eq);
title('奈奎斯特采样率下抽样');
xlabel('时间 (秒)');
ylabel('幅值');
grid on;
subplot(2,2,4);
stem(n_high,y_high);
title('高采样率下抽样');
xlabel('时间 (秒)');
ylabel('幅值');
grid on;
```
运行结果如下图所示:
![image](https://user-images.githubusercontent.com/26807276/118364272-a5e4f480-b5c6-11eb-8d0d-5a9b62fbf5b4.png)
从图中可以看出,低采样率下抽样会导致信号失真,高采样率下抽样则浪费了采样点。只有在奈奎斯特采样率下抽样,才可以保证不失真地重构出原始信号。
阅读全文