问题标签 [sine-wave]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
matlab - Matlab 优化例程无法拟合简单的正弦数据
我有一些简单的时间与位置数据,我正在尝试使用 matlab 的任何优化函数来拟合。我给出了一个数据示例(以蓝色显示)和我在使用 lsqnonlin 时得到的正弦拟合(以红色显示)。1
我知道我的拟合对初始条件有些敏感,但我也知道我的数据幅度非常接近 ~1,频率非常接近 6 Hz。尽管使用接近实际值的初始猜测,但曲线拟合仅适用于我尝试拟合的每 3 条曲线中的大约 1 条。为什么会发生这样的事情?
作为参考,这是我编写的正在优化的函数(注意:我的数据已经有 mean=0 所以我不需要偏移项):
我在 matlab 中尝试了一些不同的优化函数,包括:lsqnonlin、lsqcurvefit、fminsearch、fminunc
我也玩过初始条件 (IC),发现例如曲线 A 可能很适合 IC#1,但不适合 IC#2,而曲线 B 在使用 IC#1 时很不适合,但在使用 IC#2 等时非常适合。
看到数据非常干净,我真的很惊讶优化例程无法找到正确的参数。也许我在做一些非常愚蠢的事情!非常感谢任何帮助/解释
编辑(2017 年 11 月 6 日@7:30AM)这是我如何称呼我的优化:
此外,这里是我试图拟合的数据示例(请注意,我将 y 乘以 100 以获得更重要的数字来显示):
matlab - 如何将正弦波形转换为音频?
我有原始数据:
x 值 y 值
x
是时域。采样率为 8000 Hz。
我已经将它们绘制成正弦波,但似乎找不到任何方法将其转换为音频形式。
有人可以指导这个过程吗?
java - 无限期地播放正弦波 - java
我正在尝试制作一段可以连续播放正弦波的代码。我希望能够播放 MIDI 音符的频率。java 中的 MIDI 库感觉有点草率(当我告诉它播放时,在按下键和播放音符之间会有一点延迟)。
我看过这个例子,你生成一个确定长度的正弦波,然后你通过给出SourceDataLine
一个字节数组来播放它。这行得通,但字节数组只能这么长,最终会停止播放。
我的下一个想法是不断向该行写入一个字节,计算下一行并继续。这是我的代码:
我希望这会给我一个恒定的 440hz 频率输出,但它给了我这个错误:
java.lang.IllegalArgumentException: illegal request to write non-integral number of frames (1 bytes, frameSize = 2 bytes)
如果没有,有没有办法在 java 中加速 MIDI 库或者我只是犯了一个愚蠢的错误?提前致谢。
arrays - 在 numpy 数组中生成一系列稍微随机的整数
我想在 numpy 数组中创建复合音频测试信号。我需要将值四舍五入为最接近的整数。其次,我想添加随机噪声或抖动。
您可以在下面看到我当前使用的代码。这应该包含 24 位整数(如果我做对了),即使它存储在 32 位整数字中(以匹配通常以这种方式存储的 pcm 音频样本)。
在此示例中,第一个正弦波音调在半峰值 (-6dBfs) 处为 1000.2Hz。这里还有两个正弦波分量,但实际上它可以包含任意数量的它们。我现在想添加一些抖动。这将被计算为数组中每个纵坐标的随机值。它将向每个数组元素(每个音频样本)添加一个小的随机生成的值,例如 + 和 - 0.5 之间的峰值。
我的代码似乎工作正常,但不包含随机“抖动”组件。有人可以让我知道如何做到这一点 - 并让我放心,我最终会得到 24 位分辨率整数。
javascript - 水平和按比例调整正弦波的大小 - js
我不知道水平调整正弦波大小并在调整窗口大小时缩小比例的正确方法。它仍然需要垂直位于同一位置,我现在只需要水平和按比例调整大小。正弦波显示在这个 js-fiddle 中: https ://jsfiddle.net/x2audoqk/7/
正弦波的js代码:
我如何实现这一目标?如果您需要更多信息或澄清,请随时询问。
python - 在python中将FFT绘制为一组正弦波?
我看到有人在演示文稿中这样做,但我很难重现他能够做到的事情。这是他的演示文稿中的一张幻灯片:
很酷。他使用 FFT 分解数据集,然后绘制 FFT 指定的适当正弦波。
因此,为了重现他所做的事情,我创建了一系列对应于 2 个正弦波组合的点:
现在我想把这个波(或者更确切地说,点所暗示的波)分解回原来的 2 个正弦波:
我首先导入numpy
并获取以下fft
内容sin3
:
好的,这就是我所得到的。现在我有一个复数数组:
如果我天真地绘制它,我会看到:
好的,不知道该怎么办。
我想从这里得到看起来像 sin1 和 sin2 的数据集:
我了解数据集中复数的实部和虚部fft3
,我只是不确定如何处理它们以从中派生sin1
数据sin2
集。
我知道这与编程无关,而与数学有关,但有人可以在这里给我提示吗?
编辑:更新马克·斯奈德的回答:
使用 Mark 的代码,我能够得到我所期望的结果并最终使用了这种方法:
稍后我会让它返回重组的波浪列表,但现在我遇到了一个我不太明白的异常。首先我这样称呼它,只是传入一个数据集。
但看起来不错,但我在y=0.2
有谁知道这可能是什么或导致它的原因时得到了这条奇怪的线?
编辑:
上述问题已在评论中由 Mark 回答,谢谢!
python - 在 Python 中连续播放音频
你好呀,
我正在寻找一种在 Python 中使用尽可能少的代码实时播放音频文件的方法。我尝试使用 gstreamer-command 播放预先录制的正弦波:
但是这个解决方案是垃圾,因为它必须首先加载媒体文件,因此在播放声音之前有 2 秒的延迟。此时,程序运行停止。我寻找一种解决方案,它可以在程序中调用时立即播放声音,并且不会影响它的流畅运行。所以它应该能够在一秒钟内多次播放声音。有任何想法吗?
感谢您提前回答!