【发布时间】:2014-07-08 19:21:21
【问题描述】:
我想在 Qwt Oscillocope 的示例中添加和绘制信号频谱。我的想法是创建另一个 seriesData 类。 意甲数据。我想知道SeriesData的样本和Signaldata的样本之间是否不会冲突,或者我只需要修改signaldata? 任何帮助和建议将不胜感激。谢谢
【问题讨论】:
我想在 Qwt Oscillocope 的示例中添加和绘制信号频谱。我的想法是创建另一个 seriesData 类。 意甲数据。我想知道SeriesData的样本和Signaldata的样本之间是否不会冲突,或者我只需要修改signaldata? 任何帮助和建议将不胜感激。谢谢
【问题讨论】:
输入信号通常是循环缓冲区的形式,输出缓冲区可以是静态的。这也适用于时域图。如果你不得不改变它们,如果你没有真正看到你的结构是不可能回答的我是这样做的:
为 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) 添加到开始位置,不要忘记在找到真正开始之前,触发器也会将此时间用作开始点...
【讨论】: