波形解析の際のban​dpassfilte​rの使用について

16 views (last 30 days)
R
R on 28 May 2020
Commented: R on 1 Jun 2020
波形処理のために以下のコードでフィルタリングをしようとしています.
y=bandpass(x,[50 450],fs)
しかし,
エラー: signal.internal.filteringfcns.parseAndValidateInputs (line 62)
入力データは、有限で非スパースの、倍精度または単精度のベクトルまたは行列でなければなりません。
エラー: bandpass (line 103)
opts = signal.internal.filteringfcns.parseAndValidateInputs(x,'bandpass',varargin);
というエラーが出てしまいました.
ヘルプセンターのコードを基に作成したのですが...うまくいきませんでした.
教えていただけますと幸いです.よろしくお願いします.

Answers (1)

Shunichi Kusano
Shunichi Kusano on 29 May 2020
エラーメッセージを見ると「bandpass関数で扱えるデータが入力されていません」っていう注意ですね。ですのでコードのxが、ベクトルか行列の形になっているか、型がsingleかdoubleになっているか、といったことを確認してみてください。
下記にご参考までのコードを載せておきます。
t = [0:0.01:10];
x = sin(2*pi*1*t) + 0.5*cos(2*pi*4*t);
ismatrix(x) % 行列(ベクトル)かの確認
class(x) % xの型の確認
filt_x = bandpass(x,[2 5],100);
plot(t,x,t,filt_x);
  3 Comments
Shunichi Kusano
Shunichi Kusano on 30 May 2020
Edited: Shunichi Kusano on 30 May 2020
NaNは考えていませんでした。確かにNaNを入れると同じエラーが出ましたので、それが原因だと思います。
数行ということでしたら解決策としては、fillmissing関数を使ってNaNを別な値に置き換える、もしくはliveeditorのタスク機能の「欠損データの削除」でも同じことができます(内部では同じ処理)。後者の方が、置き換え後のデータを確認しながらインタラクティブに処理できるのでおすすめです。
R
R on 1 Jun 2020
liveeditorを用いて欠損地の置き換えを行ったところ,無事フィルタをかけることができました.お忙しいところ,ご回答いただき本当にありがとうございました.

Sign in to comment.

Products


Release

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!