作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在研究项目,需要可视化频谱分析以设置一些精确参数。现在,我将垃圾箱转换为屏幕空间,因为在线性空间中,较低频率的幅度被压缩在一起。这是我在C++中的代码:
float windowSize = 640;
float windowHeight = 480;
for (size_t i = 0; i < bins; i++)
{
float m = audioIn.getSpectrum.at(i)*windowHeight;
float pos = i;
drawLine(vec2(pos, 0), vec2(pos, m));
}
pos
,但失败了。我猜想我缺少关于对数的关键知识。
最佳答案
通常,光谱仪以10为底的对数刻度显示。
假设您的情况下的bins
从0 Hz
变为nyquist Hz
,则可以尝试执行以下操作(对于44.1kHz音频):
float nyquist = 22050.0;
float logMax = log10(nyquist);
float log = log10((float)i * nyquist / (float)bins);
float pos = log / logMax * windowSize;
关于c++ - 频率-线性仓到对数屏幕空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36730594/
我正在尝试为机器人框架获取魔法。 我按照此详细指南中的说明进行操作 https://blog.codecentric.de/en/2017/09/robot-framework-compare-ima
我是一名优秀的程序员,十分优秀!