【问题标题】:Real time spectrogram analysis实时频谱图分析
【发布时间】:2016-03-14 13:49:14
【问题描述】:

我正在尝试执行实时声音分析。目前我能够实时获取频谱流,但是当我尝试绘制频谱图时,即使我尝试减少计算,它也会引入大约 4 秒的延迟。

我想知道是否有一种方法可以更快地绘制频谱图(对于绘制数据,更新轴而不是更新图)。

目前我正在使用具有 1024 个样本的输入缓冲区:

Spectrogram(audio, 256, round(256/2), 256, 1800)

我尝试减小窗口大小和NFFT,但结果总是一样。

【问题讨论】:

    标签: matlab real-time fft matlab-figure spectrogram


    【解决方案1】:

    尝试为频谱图的每次更新设置图像 CData(参见下面的示例代码)。如果你能足够快地计算你的频谱图,这应该不会导致长时间的延迟。通过仅调用没有输出的频谱图来生成新图像实际上可能会导致延迟。

    你可以使用

    tic
    S=Spectrogram(audio, 256, round(256/2), 256, 1800);
    toc
    

    查看每次计算需要多长时间,但我怀疑这将在足够的时间内进行计算,并且当您调用没有输出的频谱图时,您的瓶颈是整个图形的生成。

    figure
    audio=randn(1024,1);
    [S,F,T]=spectrogram(audio,256,round(256/2),256,1800);
    im=image(F,T,abs(S).^2);
    
    for i=1:100
        audio=randn(1024,1);
        S=spectrogram(audio,256,round(256/2),256,1800);
        set(im,'CData',abs(S).^2);
        pause(1/30);
    end
    

    【讨论】:

    • 这似乎是提高频谱图绘图速度的好方法。我正在尝试编写代码来执行分析!谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-20
    • 2018-06-05
    • 2020-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多