如何自动计算给定数量位置的正弦波值?

时间:2012-06-18 18:44:08

标签: c# math

我至少有12个职位。最小值和最大值是0和1.因此,如果我想在12个位置绘制一个正弦波(即每个位置一个值),我会得到一个像这样的值列表:0.5,0.66,0.83,1,0.83, 0.66,0.5,0.33。 0.16,0,0.16,0.33,0.5

但是,如果我想将poisitons的数量扩展到24,或48或96等,该怎么办?我将如何算出值(即一些算法而不是手工制作)?

请注意,我的正弦波不是重复的正弦波,只是由上面列表构成的单个数字。

1 个答案:

答案 0 :(得分:1)

正弦波方程是y = sin x(对于“单位”正弦波)。

您需要做的是将x轴划分为您想要显示的位置数,然后显示这些x值。

由于您的x max为1,请使用: 注意:由于正弦波不会在x轴上以1结束,我假设您希望将其绑定到这些值,因此x轴将被缩放以使1.0 = 2 *裨

double xStep = 1.0/NumberOfPositions;

然后做:

for(double x = 0.0; x < 1.0; x += xStep)
{
    double yValue = Math.Sin(x*2*Math.PI); // Since you want 2*PI to be at 1
}

OR:

double xStep = 1.0/NumberOfPositions;
double[] yValues = new double[NumberOfPositions+1];
double[] xValues = new double[NumberOfPositions+1];
for (int i = 0; i < NumberOfPositions+1; i++)
{
    xValues[i] = i * xStep;
    yValues[i] = Math.Sin(xValues[i]*2*Math.PI); // Since you want 2*PI to be @ 1
}