このライブラリはC++でM系列信号(m-sequence; maximal length sequence: MLS)を生成します。 同定用の入力等に使用できます。
使い方はmain.cpp
を見ましょう。
int main() {
MLS mls{10}; //MLS信号のコンストラクタを呼ぶ(引数はシフトレジスタの次数)
for (int i = 0; i < 100; ++i) {
int x = mls.SignalGet(); //MLS信号は関数を呼ぶたびに次の値を返す
std::cout << x << std::endl;
}
return 0;
}
ここで、MLSクラスのコンストラクタの引数はシフトレジスタの数です。シフトレジスタは**MLSの長さ(周期)**を決める重要なパラメータです。必要な長さに応じて生成しましょう。シフトレジスタが長すぎる場合は(演算性能にもよりますが25以上で)生成までに時間がかかると思います。
SignalGet()
を呼ぶたびに次のMLSを取得することができます。1周期が取得し終わった際は、最初に戻ります。
いつか書きます。。。
mbed版も用意しました。MLS_mbed.h
とMLS_mbed.cpp
を使用してください。mbed版の場合はシフトレジスタが17以上が生成できないことが確認されています(mbed OS6, 2023-02-22)。