• ベストアンサー

matlabでのくし型フィルタについて

matlabでくし型フィルタを作りたいのですがどうしても分かりません。 くし型フィルタをタップ長1024点のFIRフィルタで作成し、くし形フィルタの通過域と阻止域の幅が50Hzごとに繰り返すようなものを作りたいです。どなたかお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • rabbit_cat
  • ベストアンサー率40% (829/2062)
回答No.1

とりあえず,FIRフィルタを適用したいってことなら conv とか filter とかの関数を使えばいいです. Signal Processing Toolboxを持っているなら, fdatool とすれば,GUIでフィルタのデザインができます.

kaonia
質問者

お礼

回答ありがとうございます。実はまだmatlab初心者なのでconvとかfilterとかを使えばよいといわれてもピンときません。よろしければ具体的なプログラム例を教えてくださるとうれしいです。

関連するQ&A

  • FIRフィルタの製作

    FIRフィルタの製作で困っていることがあります。 FIRフィルタをローパスとかバンドパス的な遮断の点からではなく 位相をずらす観点から、製作したいと思いつつも なかなか調べても遮断周波数を決めてタップ係数を求める手法 しか見つかりません。 初めてのフィルタ製作もあって、できるだけツールからではなく 手計算で求めたいです。 ご存知の方がいらっしゃったら、ご教授ください。

  • Matlab ハイパスフィルタ

    Matlabでのハイパスフィルタと帯域通過型フィルタの作り方を教えていただけませんか?

  • 現在ディジタル信号処理について勉強している初心者です。

    現在ディジタル信号処理について勉強している初心者です。 勉強していくうちにいくつか分からない点が出てきましたので質問させていただきました。 よろしくお願いします。 1.FIRフィルタを作成するとギブス現象が生じ、窓関数をかけるなどしてリプルを抑えますがなぜリプルがあってはいけないのでしょうか?これがあるとどこに影響(問題)が生じてくるのでしょうか? 2.本にFIRフィルタを窓関数法により作成すると「設計仕様と得られたFIRフィルタの周波数応答との間の誤差は通過域端および阻止域端周波数の近傍に集中する」と書かれていたのですが、これはグラフを見て分かるものなのでしょうか?意味がよくわかりません。 以上の2点について現在疑問を感じています。 よろしくお願いします。

  • バタフライ型FIRフィルタの逆フィルタの求め方

    バタフライ型FIRフィルタの逆フィルタの求め方について教えてください。 X, Yは(互いに相関が無い)入力、X', Y'はFIRフィルタの出力とします。 また、Hxx, Hxy, Hyx, Hyyはタップ係数とします 従ってこれらは以下の関係式となっています。 X'=Hxx*X+Hxy*Y Y'=Hyx*X+Hyy*Y このとき、逆フィルタはどのように求めればよいのでしょうか。 つまり、(X', Y')=>(X, Y)を求める方法が知りたいと思っています。 ノイズ等は無いとし、タップ長は任意とします。 (タップ長は適当に3程度と仮定してください) ご教授頂ければと存じます。宜しくお願い致します。

  • MATLABのプログラミングを使って

    MATLABのプログラミングを使って 小惑星探査機はやぶさのビーコン音を作成したいのですが よく分かりません…。 ビーコン音は1024Hzと2048Hzの短形波が一秒ごとに 繰り返していることはネット検索で分かりました。 でも、それをどうようにプログラムをすればいいのかが分からないです。 もしかしたら、プログラミングでは作成できないのでは…と考えましたが 無知な私で判断するには早いと思い、ここに書き込ませて頂きました。 よろしくお願いします。

  • FIRフィルタの遅延量補正とIIRフィルタの安定性について教えて頂きた

    FIRフィルタの遅延量補正とIIRフィルタの安定性について教えて頂きたいのですが。  双一次z変換を用いていくつかのIIRフィルタを作る事が出来ました。Scilbが持つIIR関数と比較して同じ結果になっています。IIRフィルタがフィルタ係数によっては不安定=発信したりする、というのはScilab等の結果と同じになる→フィルタ係数も同じ→不安定にならない。と思ってよいのでしょうか?。例えばですが、あるサンプリング周波数の波形データをフィルタする為に、同じサンプリング周波数で作ったImplus波形をIIRフィルタに放り込んで周波数応答を確認したら、実際にフィルタする波形データの最初から最後までその周波数応答でフィルタされると私は理解しているのですが。  私のフィルタを使う用途の場合は、フィルタの計算速度は特に制限は無く、速いに越した事はありませんが得られた結果が正確な事が大切なので、安定性や係数誤差の事を考えるとIIRフィルタではなくFIRフィルタでも構わないのですが、FIRフィルタの場合だとタップ数が多くなるので波形の遅延量が無視出来ません。フィルタを通した波形は次定数fastのレベル波形にして100Hz位で出すとは言え、IIRよりは数秒かコンマ数秒遅延した結果になると思います。そのような場合、遅延量を補正するとしたらどうしたら良いのでしょうか?。個人的にはタップ数が(IIRの場合は次数が)遅延量と思っているのですが。  宜しくお願い致します。

  • バンドパスIIRフィルタの低域におけるエラー

    バンドパスIIRフィルタの低域におけるエラー 申し訳ないのですが教えて下さい。  波形データのオクターブバンド分析結果を出す為に、ScilabやOctaveなどMatlabクローンのソフトを使ってバンドパスIIRフィルタを使用して各バンドでフィルタを通過させるのですが、ナイキスト周波数に対して通過域が低域にありすぎるとエラーを起こすのか、結果が出てきません。サンプリング周波数の値を変えて遮断周波数との差を縮めればそのようなエラーは起きません。例えば、480Hzサンプリングでも、1Hzと2Hzの中心周波数のバンドパスフィルタは値が帰っていなかったり、波形がおかしかったりします。  フィルタ次数は4で行っていて、1などに下げればそのナイキスト周波数と遮断帯域の差ではエラーを起こさなくなりますが、もっと差が広がった場所では起きますし、JISで定めるオクターブフィルターの遮断性能を考えると次数を下げる訳にも行きません。  本家Matlabはもっていないので判りませんが、会社のLabviewですと問題はありません。解決策はデサンプリングしてエラーを起こす帯域ではサンプリング周波数を落とすしか無いのかな?と思うのですが、実際はどうなのでしょうか?お教え頂けると幸いです。 宜しくお願い致します。

  • 位相ずれのないフィルター

    現在デジタルフィルタに関して勉強中の者です。 当初周波数特性しか意識せずFIRやIIR等を使用していたのですが、後に位相特性がある事に気づきました。お恥ずかしい話です。 狙った周波数成分を除去し、且つ位相ずれがないフィルタをご存知の方がいらっしゃったら教えて頂けますでしょうか。 自分でできる限り調べMATLABのfiltfilt関数が一番近いのかなと思っています。 どうぞよろしくお願いします。

  • FIRにおける小数点を含む係数の乗算について(VHDL記述)

    お世話になっております。 掲題の件ですが、 現在VHDLを使ってFIRフィルタを設計しておりますがbit演算に困っています。 FIRはxilinxのcoreを使っており、係数の設計はMATLABのFDATOOLを使っています。 フィルタを通すデータビット幅は14bit(-4096~4095)、 フィルタ係数も14bit、 フィルタ出力も14bitを考えています。 MATLABでフィルタを設計し、はきだされる係数は1未満の小数点でした。 データ入力(14bit)×係数(14bit)=データ出力28bit→丸めて14bit となりますが、1未満の係数をどうやって14bitに表すか、 28bitをどうやって丸めるか悩んでいます。 係数をデータ入力に揃える為に、係数に4096を掛けて、小数点以下を四捨五入して丸めて、その整数部を14bitに直してデータ入力に掛けて、 データ出力28bitは1/4096して12bitビットシフトして、マイナスもあるため先頭bitを移動すれば宜しいのでしょうか? よろしくお願いします。

  • MATLABで波形を一周期ごとに区切る方法

    MATLABについての質問です。 加速度センサで取得した歩行波形を一周期分ごとに区切って、ファイルに保存するまでの過程をMATLABを使って行いたいのですが、いい方法があれば教えて下さい。 今、自分で考えている手順は、 (1)波形をSavitzky-Golayフィルタで滑らかにする (2)波形のピーク値の位置を特定する (3)ゼロ点と波形が交わる点を特定する (4) (2)、(3)を利用して、一波形(ゼロ点~ピーク値~ゼロ点)分のデータを抽出してファイルを作成する という風に考えています。 今のところ(2)まではしたのですが、どうもしっくりきません。 波形を一周期ごとに区切るよい方法がありましたら教えて下さい! よろしくお願いします。

専門家に質問してみよう