频谱图的绘制,首先要理解快速傅里叶变换,推荐文章:https://blog.csdn.net/shenziheng1/article/details/52891807,博主就是看这篇博客入门的。
理解了傅里叶变换之后,我们需要将我们解析音乐获得的数据通过FFT将时域转换为频域,之后才能绘制频谱图,我们可以根据理解自己写FFT代码,也可以根据目前网上的FFT开源代码稍加修改,这里推荐两个开源的FFT代码作为参考:
https://blog.csdn.net/fengyhack/article/details/42780785
https://blog.csdn.net/heycwn/article/details/51202506
FFT转换后的数据传入我们的绘制逻辑就可以绘制属于我们自己的频谱图了:
Complex* inarr =new Complex[n];
Complex* outarr =new Complex[n];
int i=0;
for(vector<double>::iterator it = vertices.begin(); it != vertices.end(); it++ ) //用迭代器的方式输出容器对象的值
{
inarr[i++].real=*it;
}