(2) 在matlab中产生正弦信号 , 的持续时间为10秒,以采样率为60Hz、80Hz,200Hz,对其进行数字化处理,分析不同采样率对频谱的影响
时间: 2024-06-13 19:08:44 浏览: 165
以下是在MATLAB中产生正弦信号并进行数字化处理的代码,分别以60Hz、80Hz、200Hz的采样率进行采样和重建,并分析不同采样率对频谱的影响:
```matlab
% 产生正弦信号
t = 0:0.01:10; % 时间范围为0到10秒,采样频率为100Hz
f = 10; % 正弦信号频率为10Hz
y = sin(2*pi*f*t); % 产生正弦信号
% 以不同采样率进行采样和重建
fs1 = 60; % 采样率为60Hz
fs2 = 80; % 采样率为80Hz
fs3 = 200; % 采样率为200Hz
Ts1 = 1/fs1; % 采样周期
Ts2 = 1/fs2;
Ts3 = 1/fs3;
n1 = 0:Ts1:10; % 采样时刻
n2 = 0:Ts2:10;
n3 = 0:Ts3:10;
y1 = sin(2*pi*f*n1); % 采样
y2 = sin(2*pi*f*n2);
y3 = sin(2*pi*f*n3);
t1 = 0:0.01:10; % 重建时刻
t2 = 0:0.0125:10;
t3 = 0:0.005:10;
y1_recon = sinc_interp(y1, n1, t1); % 重建
y2_recon = sinc_interp(y2, n2, t1);
y3_recon = sinc_interp(y3, n3, t1);
% 分析不同采样率对频谱的影响
Y = fft(y); % 原信号频谱
Y1 = fft(y1_recon); % 60Hz采样率重建信号频谱
Y2 = fft(y2_recon); % 80Hz采样率重建信号频谱
Y3 = fft(y3_recon); % 200Hz采样率重建信号频谱
f_axis = linspace(-50, 50, length(Y)); % 频率轴
f_axis1 = linspace(-30, 30, length(Y1));
f_axis2 = linspace(-40, 40, length(Y2));
f_axis3 = linspace(-100, 100, length(Y3));
figure;
subplot(2, 2, 1);
plot(f_axis, abs(fftshift(Y)));
title('原信号频谱');
subplot(2, 2, 2);
plot(f_axis1, abs(fftshift(Y1)));
title('60Hz采样率重建信号频谱');
subplot(2, 2, 3);
plot(f_axis2, abs(fftshift(Y2)));
title('80Hz采样率重建信号频谱');
subplot(2, 2, 4);
plot(f_axis3, abs(fftshift(Y3)));
title('200Hz采样率重建信号频谱');
```
通过上述代码,可以得到不同采样率下的重建信号频谱图,从而分析不同采样率对频谱的影响。可以看出,采样率越高,重建信号的频谱越接近原信号的频谱,采样率越低,重建信号的频谱越发生混叠现象,频谱图中会出现多余的频率分量。
阅读全文