手習ひデジタル信号処理(132) プロは1行でピーク検出。Scilabでなぞってみた

Joseph Halfmoon

前回も「素朴なピーク検出」続けてしまいました。しかしネット上を漁っていて発見、「プロの人は1行でピーク検出しちゃうんだ」。信号処理も素人ならScilabも素人のお惚け老人は驚愕。さっそく「真似っこ」してみようと。しかし、元のコードはMATLAB、Scilabは「似ているけど、じゃない」方なのでそのままでは動きませぬ。
“手習ひデジタル信号処理(132) プロは1行でピーク検出。Scilabでなぞってみた” の続きを読む

手習ひデジタル信号処理(131) Scilab、素朴なピーク検出、その2

detectedPeaks
Joseph Halfmoon

前回、自前の「素朴なピーク検出関数」を作製、FFT結果に適用し所望のドップラー効果のピーク周波数位置を求められました。しかし、ありがちな「ピークが台地(メサ)状だったらどうよ」問題に対する挙動を確かめてません。お惚け老人は自分で作っておきながら既にロジックは忘却力の彼方。実際に確かめてみるしかないっと。どうなのよ。
“手習ひデジタル信号処理(131) Scilab、素朴なピーク検出、その2” の続きを読む

手習ひデジタル信号処理(130) Scilab、素朴なピーク検出、その1

peakDetection3
Joseph Halfmoon

前回は「実験材料の音源」である救急車のピーポー音をFFTしてピークとなる周波数の抽出を試みました。単純な最大値抽出だったので1周波数のみ検出。ピーポーで2波長、それにドップラー効果がかかっているので合計4波長が観察できるはずです。今回は「素朴なピーク検出関数」を自前で拵えて音源波形に適用してみたいと思います。
“手習ひデジタル信号処理(130) Scilab、素朴なピーク検出、その1” の続きを読む

手習ひデジタル信号処理(129) Scilab、音源(救急車)の周波数を求めてみる、その1

FFT1
Joseph Halfmoon

前回「実験材料の音源」として救急車のピーポー音(サイレン)を作製。遠くから近づく様子が聞き取れて悦に入りました。さてその処理の第一歩として音源の周波数を求めたい、と。FFTかけてグラフ上で読み取れば一目瞭然なんでありますが、関数の処理結果で数値として取得したいです。とりあえずの関数作ってみたけれども機能不足デス。 “手習ひデジタル信号処理(129) Scilab、音源(救急車)の周波数を求めてみる、その1” の続きを読む

手習ひデジタル信号処理(128) Scilab、音源(救急車)、ドップラー効果、距離減衰有

ssAmbMapSound0
Joseph Halfmoon

信号波形を処理した結果をグラフで見るのも良いのですが「実体験」したいです。それには音にして耳で聞くという方法もありかと。音声データの入出力は第96回第97回で練習済。今回は処理対象の「音源」として救急車のピーポー音(サイレン)を作製してみましたぞ。一応、ドップラー効果あり、距離減衰あり。なんちゃってだけど。 “手習ひデジタル信号処理(128) Scilab、音源(救急車)、ドップラー効果、距離減衰有” の続きを読む

手習ひデジタル信号処理(127) Scilab、filter関数で時間波形をBPフィルタ

iirBpfGainPlot
Joseph Halfmoon

前回、実際に時間波形に対してフィルタ処理を行うfilter関数の内部「相当のハズの」ブロック図を描きました。お惚け老人的には腑に落ちた感じ(ホントか?)今回は実際に「時間波形」をIIRフィルタしてみます。フィルタ係数は「アナログフィルタ」との関係性がつけやすいと思われる iir() 関数(第123回)で求めてみます。
“手習ひデジタル信号処理(127) Scilab、filter関数で時間波形をBPフィルタ” の続きを読む

手習ひデジタル信号処理(126) FIR、IIR、直接形、転置型、継続形ブロックダイアグラム

IIR2transBLK
Joseph Halfmoon

前回までで、Scilab上で使用できるFIR、IIRフィルタの設計関数を一通り「なでた」感じがします。そこで今回からは求めた係数を使って実際に時間波形にフィルタを適用するfilter関数をと考えました。しかし、フィルタ関数のブロックダイアグラムを考えたら引っかかりました。今回は「ブロックダイアグラム祭り」だあ。

“手習ひデジタル信号処理(126) FIR、IIR、直接形、転置型、継続形ブロックダイアグラム” の続きを読む

手習ひデジタル信号処理(125) Scilab、yulewalkでIIRフィルタを設計

yulewalkFreqRes
Joseph Halfmoon

前回前々回と練習してきたIIRフィルタ設計関数ですが、今回はその3回目。練習するのはyulewalk()関数です。「最小二乗フィルタを設計」とHELPページのタイトルに掲げられてますが、それをするのに使っているのがYule-Walker方程式みたいです。またメンドクさそうな奴を関数名に頂いておる設計関数だよ。
“手習ひデジタル信号処理(125) Scilab、yulewalkでIIRフィルタを設計” の続きを読む

手習ひデジタル信号処理(124) Scilab、eqiirでIIRフィルタを設計

LPF_Fc2_Fc3_01_001
Joseph Halfmoon

前回はIIRフィルタの設計に「使えそうな」設計関数を列挙。その上で以前に使用したことのあるiir()関数をおさらいしてみました。アナログフィルタを双一次変換して離散的なデジタルフィルタにする関数ね。今回はeqiir()関数を練習してみます。歴史と伝統?の計算アルゴリズムsyredi関数のフロントエンドみたいです。 “手習ひデジタル信号処理(124) Scilab、eqiirでIIRフィルタを設計” の続きを読む

手習ひデジタル信号処理(123) Scilab、IIRフィルタの設計関数、おさらい

BilinearTrransform
Joseph Halfmoon

前回まででScilabに存在するFIRフィルタ設計用の「代表的と思われる」関数4種を手習ひしてみました。FIRをやった(やっつけた)のであればIIRをやらないという分けにはいかんでしょうな。まずは設計関数を列挙。でもね、IIRフィルタの設計関数、過去回でやってみているのです。第116回ね。まずはそこのおさらいから。
“手習ひデジタル信号処理(123) Scilab、IIRフィルタの設計関数、おさらい” の続きを読む

手習ひデジタル信号処理(122) Scilab、eqfirでFIRフィルタを設計

EQFIR_FFilt_WFIR_EC
Joseph Halfmoon

過去3回、ScilabのFIRフィルタ設計関数3種について同条件(33次、ローパス、正規化カットオフ周波数0.2Hz)でフィルタ係数を求めてきました。今回は第4の設計関数 eqfir を使用してみます。eqfirは「ミニマックス近似」ということなので、インパルス応答を近似した多項式の一番良さげなやつで求めたってこと?
“手習ひデジタル信号処理(122) Scilab、eqfirでFIRフィルタを設計” の続きを読む

手習ひデジタル信号処理(121) Scilab、ffiltでFIRフィルタを設計

FFilt_WFIR_EC
Joseph Halfmoon

前回は第2のFIRフィルタ設計関数wfirでFIRフィルタを作製してみました。GUI(wfir_gui)はイマイチ(個人の感想です)だけれども「フツーに便利」な感じっす。今回は第3のFIRフィルタ設計関数ffilt関数を使ってみます。こいつが一番シンプル?な関数なんだけれども秘密?、謎?も多い(個人の感想です。)

“手習ひデジタル信号処理(121) Scilab、ffiltでFIRフィルタを設計” の続きを読む

手習ひデジタル信号処理(120) Scilab、wfirでFIRフィルタを設計

LPFhamming
Joseph Halfmoon

前回、周波数標本法というアルゴリズムでFIRフィルタを設計できるfsfirlin関数の出力でフィルタできることを確かめました。今回はウインドウィング法で線形位相のFIRフィルタを設計できるwfir関数を使ってみます。この関数は「推し」みたい。Scilabには珍しくGUIも完備してます。手放しで喜べないのだけれども。

“手習ひデジタル信号処理(120) Scilab、wfirでFIRフィルタを設計” の続きを読む

手習ひデジタル信号処理(119) Scilab、fsfirlinのLPFでフィルタしてみる

Wave1000EC
Joseph Halfmoon

前回、FIRフィルタを作ろうとしたら、いくつも設計用の関数が並立?していることに気づきました。その中でfsfirlin関数というものの設計例通りに「手習ひ」しバンドパスフィルタらしきものを生成しました。しかし、実際に信号をフィルタしてません。信号処理素人の老人は実際の波形に適用してみないと納得いかんね。
“手習ひデジタル信号処理(119) Scilab、fsfirlinのLPFでフィルタしてみる” の続きを読む