• 締切済み

規則信号と不規則信号

最初は不規則信号で、ある区間では規則信号を出力するシステムがあります。 現在の信号が、不規則信号か規則信号かをプログラムでリアルタイムに判別したいと考えています。 つまり、ずっと信号が出力されている状態で、 「今は不規則信号が出力されている」 「今は規則信号が出力されている」 という判別を、プログラムに行わせたいのです。 人間が信号を目で見れば明らかなのですが、 プログラムではどのように実現すればいいのかわかりません。 どなたか、アドバイスをいただけませんでしょうか? 統計、信号処理に関しては少し知識があります。 ☆sin波のような規則的な形を示す信号を規則信号  そうでない、不規則な形を示す信号を不規則信号  と表現しています。 

みんなの回答

  • kuro804
  • ベストアンサー率29% (523/1762)
回答No.4

 少し違った側面から参考にでもと思いつきましたので勘違い、無礼等がありましたらご容赦を!  課題の数学的あるいは論理的解決手法と具体的なハードウェア、ソフトウェアによる実現の間に少し隙間があるようない気がしました。 仮にお話から想像し  対象の波形をオシロスコープにて観測され、目視で容易に規則/不規則の信号を判別できるため、これをパソコンに取り込んで自動的に判別を行わせようというもくろみとしますと。 1番目に  パソコンにA/Dコンバータというハードが必要になります。 これによってプログラムが観測波形を時間と振幅を数値で扱う事が可能になります。若干のハードの知識が必要です。 高度なテクニックがあればサウンド機能で代替えする例があります。 2番目  私はわかりませんが情報理論的なプログラミングテクニックにて処理プログラムを完成されればいいはずです。  ただ、目視にて波形の違いが分かる事を数学的表現で表記できる程度の技量がこの処理プログラムでは必要になるかと思います。

全文を見る
すると、全ての回答が全文表示されます。
  • tadys
  • ベストアンサー率40% (856/2135)
回答No.3

質問の条件だけからは適切な回答が出来ません。 不規則と言うのがどれぐらい不規則なのか、規則と言うのがどれぐらい規則的なのか、それらがはっきりすれば適切なフィルタが設計できるでしょう。 規則信号の周波数とパワー、不規則信号の周波数分布とパワー、規則信号と不規則信号は同時に発生するのかなどで対処は異なります。 信号を目で見て明らかに差が認められると言うことなのでローパスフィルタの出力振幅をチェックするだけでも良いかもしれません。 自己相関で周期性が認められると言うことなので、対象の信号の自己相関と規則信号の自己相関との相互相関、及び対象の信号の自己相関と不規則信号の自己相関との相互相関とでどちらがより相関が高いかで判別できるかもしれません。

全文を見る
すると、全ての回答が全文表示されます。
  • tadys
  • ベストアンサー率40% (856/2135)
回答No.2

規則信号の周波数が分かっているのであればバンドパスフィルターでその周波数の信号を取り出して振幅をチェックすれば良いです。 もう少し精度をあげるのであればバンドパスフィルター出力の自乗平均と信号全体(信号-フィルター出力ならなお良い)の自乗平均の比を求めるのが良いです。 周波数がはっきりしないのであればFFTを計算してピークの周波数があるかどうかをチェックするという手段があります。 また、自己相関関数を計算する方法もあります。 ただし、FFTも自己相関も計算に時間が掛かるので信号の周波数によってはDSPや専用のハードウエアが必要になるかもしれません。 規則信号の検出の精度を上げようとすると複数サイクルの信号が必要となるので検出に必要な時間が長くなりリアルタイム性は損なわれます。 Y. W. リー著/宮川洋, 今井秀樹訳の「不規則信号論」と言う本が参考になると思いますが絶版になっています。大学の図書館にならあるかもしれません。

参考URL:
http://bookweb.kinokuniya.co.jp/htm/4501314206.html
tokorotain
質問者

お礼

回答ありがとうございます。 >バンドパスフィルターでその周波数の信号を取り出して振幅をチェックすれば良いです。 振幅をチェックするというのは、振幅が一定の大きさを保っているかどうかを調べるということでしょうか? それと、自己相関関数を使ってできないかと考え、試してみたことがあるのですが、やり方がわからず断念しました。 ある信号の自己相関関数を計算すると、その信号の周期は得ることができたのですが そこからどのようにして、信号が規則的かどうかをプログラムに判断させるか、方法が思いつきません。 お手数ですが、もう少し教えていただけませんでしょうか? 宜しくお願いします。

全文を見る
すると、全ての回答が全文表示されます。
  • N64
  • ベストアンサー率25% (160/622)
回答No.1

SETI地球外知的生命体探査のソフトは参考にならないでしょうか。ソースコードも公開しているようですが。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 入力信号x(t)、出力信号y(t)が画像のような線形時不変システムにお

    入力信号x(t)、出力信号y(t)が画像のような線形時不変システムにおいて、 入力信号に振幅1の正弦波sin(t)を入力したときの出力信号の振幅を求めたいんですが、 やり方がいまいちわかりません。 ご教授お願いします。

  • RS485の信号処理

    初歩的な事をお尋ねします。 普通のセンサーからの出力信号がデジタル(RS485)/アナログ(4-20mA)なのですが、今デジタル信号出力の方が信頼度がありそちらの処理を考えています。普通ならPCに取り込み専用ソフトで処理を行うのが常識でと思いますが、もっと簡単に計測表示とか例えばマイコンボードと液晶表示部だけのシンプルに出来ないものかと考えています。時間のムダでしょうか? ちなみに少々電子回路はわかりますし半田ゴテもあります。

  • プログラミングの問題

    1.皮膚感覚における情報処理機構及び機能に関する神経細胞の働きにはどういったことがありますか? 2.3層階層型ニューラルネットに誤差逆伝搬学習アルゴリズム適用して符号化問題の機能を実現するプログラムを自作し実行するやり方を教えて下さい。プログラムを自作したら、学習パターンと教師信号の組をランダムに入力して学習し、学習終了後の結合荷重を用いて学習入力、学習出力、教師信号を対比して示してほしいです。また、学習後の結合荷重としきい値は機能を実現するための内部表現になっているのでその特徴を教えてほしいです。 符号化問題 入力ユニット数:8、隠れユニット数:3、出力ユニット数:8として、入力信号と教師信号が同じになるように、それぞれ下記の8つの信号を学習させる情報圧縮ニューラルネット・学習終了後の入力パターンに対する出力ユニット及び隠れユニットの出力値の示して下さい。 入力信号(1,0,0,0,0,0,0,0),(0,1,0,0,0,0,0,0),・・・(0,0,0,0,0,0,0,1)         ↓          ↓             ↓ 教師信号(1,0,0,0,0,0,0,0),(0,1,0,0,0,0,0,0),・・・(0,0,0,0,0,0,0,1) どうかよろしくお願いします。

  • CNC装置のI/O信号をプログラムに取り込む方法…

    CNC装置のI/O信号をプログラムに取り込む方法について NC旋盤にバーフィーダーにて自動加工をしていますが、連携のやり取りが うまくいかない状態になっています。 汎用Mコード(M93バーフィーダー前進)の指令で材料の供給サイクルを やっているだけなので、トップカットも残材処理もできずバー材1本毎に 手動にて対応しています。 フィーダーからは相応の信号が出力しており、フィールドネット入出力に 取り込まれていますが、そのI/O信号をプログラムに反映する方法が わかりません。 I/O番号の各ビット毎にシステム変数のような名前が振ってあるので それの状態をプログラムに取り込んで、IF文でブランチしたいと考えて います。 強引にシステム変数を扱うように記述したら、エラーになってしまいます。 訳があってフィーダーの取り説は一切無く、入手も不可で、NCの取り説 も一部しかない状態です。 NC装置は、オークマOSP700Lです。 恐らく専用のシステム変数が用意されていて、それで対応しているのと 思いますが、説明書がなくてはお手上げ状態です。 宜しくお願い致します。

  • Unixについて

    大学のレポートで理解不能で困っています(>0<) 「Unixにはlexという字句解析用のプログラムがある。lexは正規表現を入力して与えると正規表現の照合を行うオートマトンを作ってそれをシュミレーションするcのプログラムを出力する。正規表現に合致する文字列が現れたときに実行すべき動作をcプログラムの形で与えることもできる。lexの仕様を調べてその実現方法を検討しなさい。」よろしくお願いします

  • (信号処理で) 線形微分方程式で係数が定数のシステム について

    (信号処理で)  線形微分方程式で係数が定数のシステム について 1.それが 線形であること 2.そして、時不変であること これらはどのようにして証明というか、確認できるのでしょうか? たとえば入力がx(t)で出力がy(t)とすると 一階の線形微分方程式で係数が定数の場合の例: dy(t)/dt + ay(t) = bx(t) このシステムを考えたとき、どのようにして線形 そして時不変であることを確認できるのでしょうか? 上の式の形のまま確認する方法はあるのでしょうか? それとも、 先に解いて、y(t) = ~~~ の形にしてから確認するのでしょうか? (とくに、時不変になるという確認方法が知りたいです。) よろしくおねがいします。

  • 引数で入力された月の翌月を算出する(Bシェル)

    実現したいことはC言語で記述したプログラムにて「AA_201012.txt」というファイルを出力した後に、Bシェル上でmvコマンドでリネームすることです。 上記の「201012」は年月なのですが、システム日付(date)から取得したものではなく、パラメーターとして入力されてくる「201011」の翌月をC言語で記述したプログラム上で求めたものであるため、「201011の翌月」をBシェル上で求める方法がわかりません。 C言語で出力する時の201012はシステム日付ではなくパラメーターの日付を出力していて、処理を流す日付に左右されず、パラメーターの201012をファイル名として使用するという制約があります。 ある環境ではそのままの名前でファイルを出力し、ある環境ではリネームしたいが、プログラムは変えたくないため、Bシェルでなんとかしたいです。 プログラムに不慣れなため、ご教授お願いします。

  • 一行ずつリアルタイムに結果を表示したい

    cgiプログラムで print "<html><body>"; foreach(0..1000000000000){ $n++; print "$n<br>\n"; } print "</body></html>"; というかんじで結果を出力しようとすると 出力の際、処理されたところまでいったん表示され 何分かたってまた、処理されたところまでを表示されます。 例)1~10000表示→3分後に10001~20000を表示 これでは10001が処理できているのかが3分後にならないとわかりません。 そのため出力結果を一行ずつリアルタイムに表示できるようにしたいのですが、 どのように処理したら良いでしょうか? お教え下さい。よろしくお願いします。

    • ベストアンサー
    • CGI
  • system で実行したプログラムの標準出力を変数で受け取りたい

    実行結果を標準出力に出力する cプログラム A があります。 perl から system を利用して A 呼び出し、その実行結果を perl で加工する仕組みを考えています。 今のところ、標準出力を一旦変更して、テンポラリのファイルに出力させ、再度そのファイルをオープンして perl で利用するという形で何とか実現できています。 open (SAVESTDOUT, ">&STDOUT") or die "..."; #(1) open (STDOUT, ">$tempFile") or die "..."; #(2) system "A"; #(3) close(STDOUT) or die "..."; #(4) open(STDOUT, ">&SAVESTDOUT") or die "..."; #(5) という感じです。 一旦テンポラリーのファイルを介するところがスマートでないので、直接変数に標準出力結果を落したいです。 (1) そのまま (2) 標準出力を perl の変数に変更 (3) そのまま (4) なし (5) そのまま といった感じで実現したい(もちろんより良い解法があれば尚宜しいです)のですが、可能でしょうか? ご教授ください。宜しくお願いします。

    • ベストアンサー
    • Perl
  • IQ変調に関して教えてください

    例えば、FM変調器を考える際に、一旦IQ変調した後ミキシングしてRF(FM)信号として送信することを考えた場合、IQ変調器ってどのように作ればいいか教えていただけないでしょうか。 例として、IQ変調器の前段に単純な1KHzのsin波が与えられると、I/Q出力はそれぞれどのような出力になるのか教えて頂けると、直感的にも分かり易いかと思います。 信号処理は素人なので、質問自体がおかしかったり、非常に分かりづらいかもしれませんが、よろしくお願いします。