计算下面三个正弦函数的组合的频谱 x(t) [sin(2 f 1 t) sin(2 f 2 t) sin(2 f 3 t)]u(t) 其中频率 f1=6.3,f2=9.7,f3=15.3,令 t=nTs,抽样周期 Ts=1/64。分别取 N=32,128,1024 将其截断后作 FFT,分别用 plot 作出频谱图中的膜与实部,并加入10dB噪声
时间: 2024-01-05 17:04:27 浏览: 175
以下是MATLAB代码实现:
```matlab
% 设置参数
f = [6.3 9.7 15.3]; % 频率
Ts = 1/64; % 抽样周期
t = 0:Ts:Ts*(1024-1); % 时间序列
x = (sin(2*pi*f(1)*t) + sin(2*pi*f(2)*t) + sin(2*pi*f(3)*t)).*(t>=0); % 信号
% 计算频谱
N = [32 128 1024];
for i = 1:length(N)
X = fft(x(1:N(i)));
f_axis = (0:N(i)-1)/N(i)/Ts;
% 加入10dB噪声
noise = 10^(10/10)*randn(size(X))/sqrt(2);
X = X + noise;
% 绘制频谱图
figure;
subplot(2,1,1);
plot(f_axis, abs(X));
title(['N = ', num2str(N(i)), ',幅度谱']);
xlabel('频率(Hz)');
ylabel('幅度');
subplot(2,1,2);
plot(f_axis, real(X));
title(['N = ', num2str(N(i)), ',实部谱']);
xlabel('频率(Hz)');
ylabel('实部');
end
```
执行上述代码后,会得到三个图形窗口,分别对应N=32、N=128和N=1024的情况。每个图形窗口中包含了幅度谱和实部谱两个子图,其中幅度谱表示信号在不同频率上的能量大小,实部谱表示信号在不同频率上的相位信息。
由于加入了10dB的噪声,因此频谱图中会出现一些随机的噪声点。不过,我们仍然可以看出三个正弦波在频谱图中的位置和频率大小。
阅读全文