问题描述
当频率为“低”(在这种情况下,freq
= 10 hz)时,曲线非常漂亮:
问题是当我增加频率时(例如尝试设置var freq = 50
):
很多波纹,它变得失真,不如曲线图好。如果我增加更多,甚至会更糟(例如,var freq = 8030
很糟糕)。
当我在专业系统上看到这种图形时,它们就可以很好地显示。
您将如何改进它? FFT,样条曲线,什么?哪个方法合适?
我真的不需要精度(例如,用于波形分析之类的东西),只需将其绘制得很好即可(例如,在Desmos https://www.desmos.com/calculator/eodkjlywjh中)。
解决方法
就像马特所说,这里的问题与plotting a discrete-time signal shows amplitude modulation中的问题相同:“在较高的频率下,当峰落在两个样本之间时,采样点可能比峰低很多。”这会导致波形的峰值发生变化,从而在图的顶部和底部产生一种波纹视觉效果。
提高采样分辨率会有所帮助。如果不能将采样分辨率提高太多,则将采样分辨率调整为正弦频率的最接近整数倍,然后设置采样相位,以便对波形峰值进行采样。例如,对于100 Hz的波cos(2 π (100*x + 0.3))
,您可以在x [n] = n / 400-0.003的400 Hz采样。这样,每个周期有四个样本,其中x [0],x [4],x [8],...正好在峰上采样。
另一个想法:以较粗的线进行绘制可以帮助平滑某些缺陷。好像您链接的desmos示例使用的是3像素线宽。