如何创建具有上下幅度边界的正弦波

时间:2014-02-08 01:49:50

标签: java audio signal-processing sin sine

我的生活无法绕过这个看似简单的问题。

我正在尝试创建一个具有幅度上限和下限的正弦波(即最高点为3,最低点为0.4)

使用常规数学我能够在数组中从1到-1获得正弦波,但我不知道如何更改这些边界。

    static int MAX_POINTS = 100;
static int CYCLES = 1;
static double[] list = new double[100];

 public static void SineCurve()
  {
    double phaseMultiplier = 2 * Math.PI * CYCLES / MAX_POINTS; 
    for (int i = 0; i < MAX_POINTS; i++)
    {
      double cycleX = i * phaseMultiplier;
      double sineResult = Math.sin(cycleX);
      list[i]= sineResult;

    }

    for(int i=0;i<list.length;i++){
        System.out.println(list[i]);
    }
  }

任何提示都将不胜感激。

1 个答案:

答案 0 :(得分:2)

幅度(sin(x)值的乘数)是您想要的最高值和最低值之差的一半。在你的情况下

amplitude = (3 - 0.4)/2

1.3。然后零偏移是最低值加上幅度,这使得它在你的情况下为1.7

您要绘制的等式是

1.3 * sin(x) + 1.7