Octave(Matlab):频谱计算

时间:2015-08-05 11:51:22

标签: fft octave spectrum audacity

使用FFT在Octave中进行频谱计算的另一个问题:

使用Audacity我创建了一个包含白噪声的.wav文件,然后使用fcut = 1kHz,-20dB / decade的低通滤波。 Audacity分析的频谱看起来像预期的那样(不幸的是,由于我没有足够的声誉,我无法发布图像)

然后我使用以下代码用Octave分析了光谱:

  pkg load signal   %load signal package
  graphics_toolkit ("gnuplot")  % use gnuplots

  close all
  clear all

  [stereosig, fs,bit] =wavread('noise_stereo.wav'); % load wav
  ch1 = stereosig(:,1); % left
  ch2 = stereosig(:,2); % right

  NFFT = 1024;
  NFFT_half = NFFT/2;
  X = fft(ch1, NFFT);
  freqvect = (1:NFFT_half+1)./NFFT*fs;

  figure(1)
  X_mag_scaled = abs(X(1:NFFT_half+1)./NFFT_half);
  semilogx(freqvect, 20*log10(X_mag_scaled));
  grid on
  xlabel('Frequency (Hz)')
  ylabel('Mag [dB]')
由于两个相邻点之间的差异可以> 0,所以由Octave产生的图极其严重"不平滑",-20dB / decade不能被正确识别。 10dB左右。 1kHz截止频率只能猜到。

是否有人知道如何获得顺畅的"在Audacity中完成的频谱(我认为这是一个合理的解决方案)?

菲利普

0 个答案:

没有答案