实时绘制频谱?

Posted

技术标签:

【中文标题】实时绘制频谱?【英文标题】:Plot Spectrum in real time? 【发布时间】:2014-07-08 19:21:21 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

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

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

    找到实际示波器视图的开始示例

    通过触发器或对于初学者来说只是最后 N 个样本(但它会因为相位而闪烁......),或者您以与采样相同的速度从头到尾按 N 个样本块预览所有样本。类似于您将数据发送到声卡以播放声音。你只是在一段时间后开始,所以你已经有足够的采样数据......

    处理数据

    将数据从起点复制到 FFT 缓冲区,如果需要,添加样本的虚部 (Im=0.0) 并处理 FFT。然后绘制输出的前半部分,例如sqrt(Re^2+Im^2)

    i-th 样本的频率(在N 之外)是f=i*samplerate/N [Hz],其中i= 1,...,(N/2)-1 跳过代表DC 分量的i=0

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

    更新开始位置

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

更多信息和演示见plotting real time Data on (qwt )Oscillocope

【讨论】:

现在我可以实时绘制信号和 FFT。现在我想在我的示波器中添加一些功能,例如触发器。如何使用 qt/c++ 实现触发功能 @TheMan 现在你很容易连续播放输入数据缓冲区,所以不要从当前缓冲区位置进行 FFT/绘制,而是从那里开始并搜索选定的触发条件。如果找到从该点开始 FFT/绘制。下一帧以相同的方式执行,但从下一个位置开始搜索,就像没有使用触发器一样。这就对了。为了使触发器正常工作,缓冲区应该足够大(屏幕+几个输入信号周期至少 2) @TheMan 就像在示波器上一样,在应用 FFT 之前,您会找到正确的起始位置 ...

以上是关于实时绘制频谱?的主要内容,如果未能解决你的问题,请参考以下文章

带 API 的实时频谱分析仪

基于simulink的DDS以及频谱实时仿真

虹科HK-R5550——一款高性价比的实时频谱分析仪

基于软件定义无线电的实时频谱分析仪功能概述触发方式

labview图形显示正弦曲线信号发生器频率幅值相位数字示波器滤波器频谱分析

基于软件定义无线电的实时频谱分析仪功能概述系统概述