Nas*_*Kas 5 c# math waveform wav wave
我也问过这个位置 上的音响设计论坛,但问题是沉重的计算机科学/数学所以它可能实际上属于在这个论坛:
因此,通过读取文件中的二进制文件(不幸的是,这正是我正在寻找的内容),我能够成功找到有关 WAV 文件的所有信息,但大罪函数的幅度和频率(赫兹)除外。只是为了验证我在说什么,该文件仅使用以下方程生成一个波:
F(s) = A * sin(T * s)
其中 s 是当前样本,A 是幅度,T 是周期。现在 T(周期)的方程是:
T = (2? * Hz) /(? * ?)
其中Hz是以赫兹为单位的频率,?是每秒采样数,而 ? 是频道数量。
现在我知道要解决振幅,我可以简单地找到 F(s) 的值,其中
s = (?/2)/T
因为那时正弦函数的值将是 1,最终值将等于 A。问题是要除以 T,我必须知道赫兹(或赫兹)。
有什么方法可以读取 WAV 文件以从数据中发现赫兹,假设文件只包含一个波。
只是为了澄清一些术语,您要查找的属性是频率,频率的单位是赫兹(每秒一次)。按照惯例,典型的 A 音符的频率为 440 Hz。
实际上,你把函数搞错了。现实中的正弦波具有这样的形式F(s) = A * sin(2*pi*s/T + c)- 你不知道它何时开始,所以你在那里得到一个常数 c。另外,您需要除以 T,而不是乘法。
获取振幅实际上相当容易。该正弦波具有一系列的波峰和波谷。找到每个峰值(高于两个邻居)和每个谷值(低于),计算平均峰值和平均谷值,幅度是两者之间差值的两倍。挺容易。周期T可以通过计算从峰到峰、从谷到谷的平均距离来估计。
有一点你需要小心。如果有轻微的噪音,您可能会在峰值附近出现轻微的凹痕。相反,14 17 18 17 14你可能会得到14 17 16 17 14. 那个16不是山谷。一旦你对真实的波峰和波谷有了很好的估计,就可以扔掉所有扭曲的波峰。