我在演示中看到有人这样做,但我很难重现他能够做到的事情。这是他演讲中的一张幻灯片:
很酷。他使用 FFT 分解数据集,然后绘制 FFT 指定的适当正弦波。
因此,为了重现他所做的事情,我创建了一系列对应于 2 个正弦波组合的点:
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
x = np.arange(0, 10, 0.01)
x2 = np.arange(0, 20, 0.02)
sin1 = np.sin(x)
sin2 = np.sin(x2)
x2 /= 2
sin3 = sin1 + sin2
plt.plot(x, sin3)
plt.show()
Run Code Online (Sandbox Code Playgroud)
现在我想将这个波(或者更确切地说,这些点暗示的波)分解回原来的 2 个正弦波:
# goal: sin3 -> sin1, sin2
# sin3
array([ 0.00000000e+00, 2.99985000e-02, ... 3.68998236e-01])
# sin1
array([ 0. , 0.00999983, 0.01999867, ... -0.53560333])
# sin2
array([ 0. , 0.01999867, 0.03998933, ... 0.90460157]) …Run Code Online (Sandbox Code Playgroud) 我的画布上有一个正弦波,它是动画的,左右摇摆。我想要实现的是,起点和终点保持固定。如何实现呢?
这是密码笔
function start() {
var canvas = document.getElementById("canvas");
var context = canvas.getContext("2d");
context.clearRect(0, 0, canvas.width, canvas.height);
drawCurves(context, step);
step += 5;
window.requestAnimationFrame(start);
}
var step = -4;
function drawCurves(ctx, step) {
var width = ctx.canvas.width;
var height = ctx.canvas.height;
ctx.beginPath();
ctx.lineWidth = 2;
ctx.strokeStyle = "rgb(66,44,255)";
var x = 4;
var y = 0;
var amplitude = 20;
var frequency = 90;
while (y < height) {
x = width / 2 + amplitude * Math.sin((y + step) …Run Code Online (Sandbox Code Playgroud)我试图在画布上绘制一个简单的正弦波,但我没有把它弄好.这是我想要的输出,如图所示.
到目前为止我得到的是http://jsfiddle.net/RaoBurugula/gmhg61s6/4/
HTML
<canvas id="myCanvas" width="360" height="360" style="border:1px solid #d3d3d3;">
Run Code Online (Sandbox Code Playgroud)
JS
var c = document.getElementById("myCanvas");
var ctx = c.getContext("2d");
var i;
for(i=0; i<360; i+= 20){
ctx.moveTo(i+5,180);
ctx.lineTo(i,180);
}
ctx.stroke();
var counter = 0, x=0,y=180;
//100 iterations
var increase = 90/180*Math.PI ;
for(i=0; i<=180; i+=10){
ctx.moveTo(x,y);
x = i;
y= 180 - Math.sin(counter);
counter += increase;
ctx.lineTo(x,y);
alert( " x : " + x + " y : " + y) ;
}
ctx.stroke();
Run Code Online (Sandbox Code Playgroud)
我想要的输出

我的天数从 1 到 180 天,从 $epoch='2020-05-11' 开始减少和增加日期。整个周期 = 365.25 天,最后将添加幅度、频率和相位以创建正弦波。这不是附加的完整代码,但我需要每天将其转换为弧度或相关联?如何解决这个问题,我通过互联网搜索只是从度数转换为弧度。
数据输入来自 bat 文件,更容易进行更改:
C:\Strawberry\perl\bin\perl.exe D:\perl\ex4444.pl Peri_GPS ZAT1_GPS 2020-05-11 180
pause
Run Code Online (Sandbox Code Playgroud)
和代码本身:
#!/usr/bin/perl
use Math::Random::OO::Normal;
use Time::Local;
use Time::Localtime;
use POSIX qw(strftime);
my $filename = 'D:\perl\program.txt';
open (FH, '>', $filename)
or die $!;
my ($station1, $station2, $epoch, $count_day) = @ARGV;
$day_a2 = -1;
$day_a1 = $day_a2 - $count_day;
$day_a3 = 1;
$day_a4 = $day_a3 + $count_day;
my ($year, $month, $day) = split('-', $epoch);
$epoch = timelocal(0, 0, 0, $day, $month-1, $year-1900); …Run Code Online (Sandbox Code Playgroud) 我正在制作一个应用程序,需要在两个给定点之间绘制正弦波。我已经谷歌了,谷歌了,但我还没有找到任何我认为合适的东西。
android中是否有一种有效的方法来使用一些预定义的点来绘制平滑的波浪状形式?
我试图用Java编写一个非常简单的声音合成器。我正在使用javax.sound.sampled包裹。下面的代码可以工作,但是正弦波非常嘈杂,听起来像是在波浪旁边播放了一些安静的暖噪声。
try {
double sampleRate = 44100;
//8 bits per sample, so a byte.
AudioFormat audioFormat = new AudioFormat((float) sampleRate, 8, 1, true, false);
SourceDataLine line = AudioSystem.getSourceDataLine(audioFormat);
line.open(audioFormat);
line.start();
//A4
double freq = 440.0;
byte[] buf = new byte[1];
//the formula for a sample is amplitude * sin(2.0 * PI * freq * time)
for (int i = 0; i < sampleRate; i++) {
double t = (i / (sampleRate - 1));
double sample = 0.1 * …Run Code Online (Sandbox Code Playgroud) 在iOS应用程序中很容易创建.任何人告诉我在录制和播放音频时创建Sinwave动画的简便方法.我被尝试了很多方面,但我不能.是否有任何第三方框架?
任何人都可以帮我解决..