用matlab实现实验1 正弦信号x(t)=sin(2πf 0 t),f 0=10Hz,计算采样频率取不同 值时的频谱并画图,分析频谱混叠现象和幅度谱的对称性。 f_s1=12Hz,f_s2=30Hz,f_s3=50Hz,针对每一种采样频率,信号 点数和FFT点数均取为128。
时间: 2024-12-21 19:23:11 浏览: 6
在MATLAB中,你可以使用`sin`函数生成给定频率的正弦信号,然后利用`fft`函数计算其频谱。这里,我们将依次计算三种不同的采样频率下的信号频谱,并讨论混叠现象和幅度谱的对称性。
首先,我们需要创建一个时间轴`t`,然后生成正弦信号`x`:
```matlab
% 定义基本参数
freq0 = 10; % 频率 (Hz)
fs_values = [12, 30, 50]; % 不同的采样频率 (Hz)
for i = 1:length(fs_values)
f_s = fs_values(i); % 当前采样频率
% 创建时间轴,假设采样周期为1/f_s
t = 0:1/(f_s*2) : 1-1/(f_s*2); % 时间范围从0到1秒,点数128
x = sin(2*pi*freq0*t); % 正弦信号
% 计算并绘制幅度谱(使用abs(fft(x)))
N = length(x);
X = fft(x, N); % FFT计算
freq_axis = (0:N-1)*(f_s/N); % 频率轴
spectrum(i) = abs(X)/N; % 幅度谱,归一化
plot(freq_axis, spectrum(i), 'LineWidth', 2, ...
sprintf('Sample Frequency = %d Hz', f_s));
% 显示混叠现象的说明(对于低采样频率)
if f_s < 2*freq0
disp(['For ', num2str(f_s), ' Hz sampling rate, the signal may suffer from spectral leakage and aliasing due to the Nyquist criterion.']);
end
end
```
这段代码会生成三个图表,每个代表一种采样频率下的幅度谱。在`f_s < 2*freq0`的情况下,即低于Nyquist频率的采样频率,你会看到混叠现象,即原本频率较高的成分出现在了较低的频率上。
为了观察幅度谱的对称性,你应该注意到对于连续时间信号,幅度谱是对称的,关于直流分量(零频率)。如果你发现谱图不对称,可能是因为数据处理过程中出现了误差或噪声影响。
阅读全文