Matlab论坛
直播中

李郝荫

7年用户 1336经验值
私信 关注
[经验]

使用Matlab对噪声信号进行FFT变换

  1. Fs = 1000;            % 采样频率
先用上述代码生成一个1Hz,1.5s的采样信号。
然后我们加入一个正常的幅值0.7频率120的正弦波信号
  1. S = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t);
为该信号加入零均值白噪声,方差为4
  1. X = S + 2*randn(size(t));
画出时域上的噪声信号
  1. plot(1000*t(1:50),X(1:50))
  2. title('Signal Corrupted with Zero-Mean Random Noise')
  3. xlabel('t (milliseconds)')
  4. ylabel('X(t)')
1.png
计算该信号的FFT
  1. Y = fft(X);
计算双边谱P2,然后计算单边谱P1和均值信号长度L
  1. P2 = abs(Y/L);
  2. P1 = P2(1:L/2+1);
  3. P1(2:end-1) = 2*P1(2:end-1);
定义时域f,并画出P1
  1. f = Fs*(0:(L/2))/L;
  2. plot(f,P1)
  3. title('Single-Sided Amplitude Spectrum of X(t)')
  4. xlabel('f (Hz)')
  5. ylabel('|P1(f)|')
2.png
对原信号进行傅里叶变换
  1. Y = fft(S);
  2. P2 = abs(Y/L);
  3. P1 = P2(1:L/2+1);
  4. P1(2:end-1) = 2*P1(2:end-1);

  5. plot(f,P1)
  6. title('Single-Sided Amplitude Spectrum of S(t)')
  7. xlabel('f (Hz)')
  8. ylabel('|P1(f)|')
3.png

回帖(2)

李郝荫

2019-3-22 15:50:55
谢谢分享
举报

林昕宇

2020-9-20 19:04:32
非常不错的资料  感谢楼主分享
举报

更多回帖

发帖
×
20
完善资料,
赚取积分