c++ - C++中的正弦波生成

标签 c++ trigonometry

我正在尝试生成一组点,当绘制为图形时,这些点表示 1 个周期的正弦波。要求是:

  • 1个周期的正弦波
  • 下限 = 29491
  • 上限= 36043
  • 点数 = 100
  • 振幅 = 3276
  • 零偏移量 = 32767

代码:

int main()
{
    ofstream outfile;
    outfile.open("data.dat",ios::trunc | ios::out);
    for(int i=0;i<100;i++)
    {
        outfile << int(3276*sin(i)+32767) << "\n";
    }
    outfile.close();
    return 0;
}

我正在生成这些点并将其存储在一个文件中。绘制这些点后,我得到下图。

enter image description here

但我只需要一个周期。我该怎么做?

最佳答案

考虑到sine wave的公式:

y(t) = A * sin(2 * PI * f * t + shift)

where:

A = the amplitude, the peak deviation of the function from zero.
f = the ordinary frequency, the number of oscillations (cycles)
t = time
shift = phase shift

会是:

y[t] = AMPLITUDE * sin (2 * M_PI * 0.15 * t + 0) + ZERO_OFFSET;
                                   ^^^ f = 15 cycles / NUM_POINTS = 0.15 Hz

要有一个完整的循环,从 y[0:t) 开始循环,其中 t 是完成一个完整循环所需的时间或点数(即波长)

关于c++ - C++中的正弦波生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50366146/

相关文章:

c++ - boolean 循环和 switch 语句

c++ - 错误 : ‘BadDevice’ was not declared in this scope

c++ - sin() 和 sinf() 的浮点值

python - 用Python绘制轨道,但当x<0时,轨迹突然变成线性

c++ - 有没有办法强制 "most vexing parse"成为错误,即使是逐个类?

php - 读取文件行和查询结果的编程函数

c++ - 如何使用 SIMD 指令使预乘 alpha 函数更快?

java - Andres画的圆不够精准

ios - 围绕中心质量创建圆形路径的算法?

java - 无缘无故的负整数,cos,sin。