【问题标题】:Matlab's specgram outdate vs spectrogram replaceMatlab频谱图过时与频谱图替换
【发布时间】:2011-03-18 06:06:39
【问题描述】:

在 Matlabs 的最新版本中,specgram 函数正在被 spectrogram 取代,文档指出:

注意。要获得与已移除谱图函数相同的结果,请指定长度为 256 的“Hann”窗口。

不幸的是,这似乎对我不起作用,如果我使用spectrogram(signal,hann(256)),结果与specgram(signal) 不同,尽管两者非常相似。有没有办法获得完全相同的输出?

【问题讨论】:

    标签: matlab signal-processing spectrogram


    【解决方案1】:

    好吧,我只是偶然发现了解决方案:

    specgram(singal) = spectrogram(signal, hanning(256))

    因为 hannhanning 在 Matlab 中不是一回事。

    感谢大家的支持。

    【讨论】:

      【解决方案2】:

      我相信它们在每个函数中的计算方式略有不同。这是我能得到的最好的:

      sig = rand(1280,1);
      Fs = 2;
      nfft = 256;
      numoverlap = 128;
      window = hanning(nfft);
      
      %# specgram
      subplot(121), specgram(sig,nfft,Fs,window,numoverlap)
      
      %# spectrogram: make it look like specgram
      [S,F,T,P] = spectrogram(sig,window,numoverlap,nfft,Fs);
      subplot(122), imagesc(T, F, 20*log10(P))
      axis xy, colormap(jet), ylabel('Frequency')
      

      【讨论】:

      • 谢谢,我会在我的项目中尝试类似的东西,因为我认为我不需要完全相同的输出。
      【解决方案3】:

      我目前没有要试用的 Matlab,但 hann(256,'periodic') 可能是您正在寻找的。

      【讨论】:

      • 我会感到惊讶,因为如果您查看 specgram edit specgram.m 的源代码,您会在第 133 行发现它使用旧的 HANNING 函数而不是 HANN 函数(尽管两者是相同的并定义为0.5*(1-cos(2*pi*n/nfft))),默认选项为“对称”
      猜你喜欢
      • 2017-09-08
      • 1970-01-01
      • 2021-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-09
      • 2013-07-25
      • 2019-07-21
      相关资源
      最近更新 更多