波を生成することは、波を識別することよりもはるかに簡単です。私はいくつかの波の生成を行う小さなプロジェクトを持っています。ここで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
ここでは波形に沿って、フレームごとに更新され、あなたが作成している電波の周波数に依存しています。波を識別するためとして
あなたは、単純な、混合されていない四角形、三角形や正弦波を得ることになるだろう知っていれば、あなたはおそらく、いくつかの簡単なテストを行うことができます。波に沿った任意の2点での振幅の変化を見てください。彼らが同じなら、方形波。線形に変化している場合(つまり、振幅の変化が一定である場合)、三角波(またはその区別をしている場合はのこぎり波)が得られます。それ以外の場合は、正弦波です。このチェックは波の種類だけが予想されていて、混在していない場合にのみ機能します。そこには私が考えることができるいくつかの他のエッジケースがありますが、私はあなたにそれを心配させます。
あなたは手の込んだ何をやっている場合は、おそらくコメント欄で提案1のように、この種のものに特化した書籍を検索する必要があるとしています。
波形にノイズがありますか?頻度を知っていますか?あなたは振幅を知っていますか?一般に、これは難しい問題です。 –
この無料の書籍をチェックしてください[ デジタル信号処理の科学者と技術者のガイド](http://www.dspguide.com/pdfbook.htm) –
申し訳ありません。私はそれが既知の頻度であり、振幅は未知であるべきであると言及すべきであった。 – Paul