c中的正弦波生成

新手上路,请多包涵

我正在尝试生成一组点,当绘制为图形时,它们代表 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;
}

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

在此处输入图像描述

但我只需要一个周期。我怎样才能做到这一点?

原文由 Pradeep 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 783
1 个回答

带入 正弦波 公式:

>  y(t) = A * sin(2 * PI * f * t + shift)
>
> ```
>
> 在哪里:
>
> A = 幅度,函数与零的峰值偏差。
>
> f = 普通频率,振荡次数(周期)
>
> t = 时间
>
> 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 是完成一个完整周期(即波长)所需的时间或点数

原文由 Joseph D. 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏