【问题标题】:How to create a sin wave with upper and lower amplitude bounds如何创建具有上下幅度界限的正弦波
【发布时间】:2014-02-08 01:49:49
【问题描述】:

我一辈子都无法解决这个看似简单的问题。

我正在尝试创建一个正弦波,其幅度的上限和下限(即最高点为 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]);
    }
  }

任何提示将不胜感激。

【问题讨论】:

  • 您将使用简单的数学运算,只不过是加法和乘法 - 将范围扩大或缩小到所需值的乘法以及将其转换为所需中心的加法。如果你先用铅笔在纸上画出来,你就可以做到这一点。
  • 事实上,如果您使用纸和铅笔并使用乘法器,您可能会解决这个问题,并更好地了解您在做什么。

标签: java audio signal-processing trigonometry


【解决方案1】:

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

amplitude = (3 - 0.4)/2

这是1.3。然后零偏移是最小值加上幅度,这在你的情况下是1.7

你想要绘制的方程是

1.3 * sin(x) + 1.7

【讨论】:

  • 谢谢吉姆! ......虽然我现在觉得很愚蠢。
猜你喜欢
  • 2021-02-26
  • 1970-01-01
  • 1970-01-01
  • 2021-05-24
  • 1970-01-01
  • 2013-02-11
  • 2014-12-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多