🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

MATLAB

MATLABはMathWorksで開発された数値計算や数値の視覚化のための高水準の対話型プログラミング環境です。

Q&A

1回答

3850閲覧

MATLABでFFTしたwavフィルタにハイパスフィルタをかけたい

ilbisonte

総合スコア2

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

MATLAB

MATLABはMathWorksで開発された数値計算や数値の視覚化のための高水準の対話型プログラミング環境です。

0グッド

0クリップ

投稿2020/12/02 06:25

編集2020/12/03 03:52

前提・実現したいこと

今回下の画像のようなFFTを作成し、低周波に出ているピークを取り除きたくハイパスフィルタを使おうと思いこちらのサイトを見つけ、ローパスフィルタのプログラムではありますが、参考にさせていただくことにしました。wavファイルをcsvにファイルにした際に、そのサイズを小さくするためにハイパスフィルタを用いることにしました。

https://qiita.com/tomochiii/items/2145ee7a23f5dd4cff9a

このサイトには3つのプログラムが掲載されており1つ目はクリアできているものとします。lowpass.mとaudio_filter.mに関しては、どちらも実行してみましたが、どちらも正規化周波数のグラフがプロットされ、目標となる下の画像のハイパスフィルタでピークを取り除いた画像になりません。FFTした画像の下がプロットされた正規化周波数の画像です。

イメージ説明
イメージ説明

power_Spectrum.mのプログラムでのsignalは、wavファイルをcsvファイルにしてそちらを配列にして入力しました。
サンプリング周波数は16000です。

教えていただきたいこと

・lowpass.mでのプログラムの流れを詳しく教えていただきたいです
・なぜ、lowpass.mとaudio_filter.mを実行した際に正規化周波数のグラフがプロットされてしまうのでしょうか

補足情報(FW/ツールのバージョンなど)

バージョン
MATLB R2020b

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jbpb0

2020/12/02 10:54

> 低周波に出ているピークを取り除きたくローパスフィルタを使おうと思い 「低周波」のピークを下げたいんですよね? ローパスフィルタは、「低周波」はそのまま残して、「高周波」の振幅を減らすフィルタですよ 下記Webページに、ローパスフィルタ適用前後のf特のグラフがあるので、それ見てください 四つ並んでるグラフの、右上が元のf特、右下がローパスフィルタ適用後のf特です https://algorithm.joho.info/programming/python/numpy-ifft-lowpass-denoise/
ilbisonte

2020/12/02 12:11

ご指摘ありがとうございます。勘違いしていました。 すぐに質問を編集いたします。
yuki23

2020/12/02 14:53

> どちらも正規化周波数のグラフがプロットされ、目標となる下の画像のハイパスフィルタでピークを取り除いた画像になりません 具体的にどういうものが表示されるんでしょうか?勝手に要約するのではなく質問文に貼ってください
ilbisonte

2020/12/03 03:53

申し訳ありません 具体的な画像を提示しました、
ozwk

2020/12/03 04:11

audio_filter.mを読んでいるといきなりFs_sineという未定義の変数がpowerSpectrum()に与えられているように見えますが、動いてますか?
guest

回答1

0

audio_filter関数にFs_sineという未定義の変数が出てくるのでエラーで強制終了しているからです。
Fsに変えて実行してみてください。

lowpass.mでのプログラムの流れを詳しく教えていただきたいです

たった3行の関数の何を説明すればいいんでしょうか? 質問は具体的にお願いします。

投稿2020/12/03 05:01

yuki23

総合スコア1448

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ilbisonte

2020/12/05 05:59

回答ありがとうございます。 Fsに変えて実行してみましたが、ここでもう一つ質問させてください。 audio_filter関数でのfilenameとはwaveファイルで良いのでしょうか。 曖昧質問で申し訳ありません。lowpass.mのの説明というより、なぜ正規化周波数のグラフがプロットされたのかが知りたいです。
yuki23

2020/12/06 01:44

> audio_filter関数でのfilenameとはwaveファイルで良いのでしょうか。 はい > なぜ正規化周波数のグラフがプロットされたのかが知りたいです。 freqz(b,a) は、出力引数なしなのでグラフをプロットします https://jp.mathworks.com/help/signal/ref/freqz.html
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問