绘制频谱实时?

时间:2014-07-08 19:21:22

标签: c++ qt plot real-time qwt

我想在Qwt Oscillocope的例子中添加和绘制信号频谱。我的想法是创建另一个seriesData类。 SerieData。我想知道SeriesData的样本和Signaldata的样本之间是否会有冲突,或者我只需要修改signaldata? 任何帮助和建议将不胜感激。感谢

1 个答案:

答案 0 :(得分:0)

输入信号通常采用循环缓冲形式,输出缓冲区可以是静态缓冲区。这也适用于时域图。如果你不得不改变它们,实际上没有看到你的结构是不可能回答我是这样做的:

  1. 为FFT制作一些缓冲区(数组)

    可以是静态的......不会发生任何变化。它的大小必须至少为slowest_timebase/fsampling个样本。如果你的FFT有复杂的域输入,那么大小加倍。如果您想滚动/缩放/取消缩放,请相应地放大尺寸

  2. 找到实际示波器视图的开始样本

    通过触发器或启动器只持续N次采样(但由于相位会闪烁...)或者您从开始到结束以与采样相同的速度通过N样本块预览所有采样。类似于你将数据发送到声卡播放声音。您只需在一段时间后开始,因此您已经有足够的采样数据......

  3. 流程数据

    将数据从起点复制到 FFT 缓冲区,根据需要添加虚部样本(Im=0.0)并处理 FFT 。然后绘制实际输出的前半部分。

    i个样本(N之外)的频率为f=i*samplerate/N [Hz],其中i={ 1,...,(N/2)-1}跳过i=0代表 DC 组件。

    您还可以将对数轴添加到频率。在这种情况下,不要忘记更改情节中的x

  4. 更新开始位置

    只需在开始位置添加使用过的样本(N)的大小,并且不要忘记触发器也会在找到实际开始之前将此时间用作起点......

相关问题