gpt4 book ai didi

c++ - 识别/生成波形?

转载 作者:太空宇宙 更新时间:2023-11-04 02:16:12 25 4
gpt4 key购买 nike

我想编写一些可以接受某种输入并将其识别为方波、三角波或某种波形的代码。我还需要一些产生所述波的方法。

我确实有使用 C/C++ 的经验,但是,我不确定我将如何模拟所有这些。最终,我想将其转换为微 Controller 程序以读取其模拟输入以确定波形。

编辑:抱歉;我应该提到它将处于已知频率并且振幅应该是未知的。

最佳答案

产生波比识别它们要容易得多。我有一个小项目可以产生一些波浪。这是来自 my project 的示例:

    float amplitude;
switch (sound->wavetype)
{
case LA_SQUARE:
amplitude = sound->theta > .5 ? 1.0 : -1.0;
break;
case LA_SINE:
amplitude = sin(2 * PI * sound->theta);
break;
case LA_TRIANGLE:
amplitude = sound->theta > .5 ? 4 * sound->theta - 3 : -4 * sound->theta + 1;
break;
case LA_SAWTOOTH:
amplitude = 2 * sound->theta - 1.0;
break;
case LA_NOISE:
amplitude = ((float)rand() / RAND_MAX);
break;
default:
;
}

theta 会在波形的每一帧更新,并且取决于您创建的波形的频率。

至于识别波,如果您知道您将得到简单的、未混合的方波、三角波或正弦波,您可以只做一些简单的测试。查看波浪中任意两点的振幅变化。如果它们相同,则为方波。如果它们呈线性变化(也就是说,如果振幅的变化是恒定的),您就会得到三角波(或锯齿波,如果您要区分的话)。否则,它是一个正弦波。请记住,此检查仅在您只期待这些类型的波浪时才有效,并且它们没有混合或任何其他类型。我能想到还有其他一些边缘情况,但我会让你担心的。

如果您正在做任何更有趣的事情,您可能需要查找一本专门研究此类事情的书,例如评论部分中建议的那本书。

关于c++ - 识别/生成波形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7409675/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com