波形解析の際のbandpassfilterの使用について
11 views (last 30 days)
Show older comments
波形処理のために以下のコードでフィルタリングをしようとしています.
y=bandpass(x,[50 450],fs)
しかし,
エラー: signal.internal.filteringfcns.parseAndValidateInputs (line 62)
入力データは、有限で非スパースの、倍精度または単精度のベクトルまたは行列でなければなりません。
エラー: bandpass (line 103)
opts = signal.internal.filteringfcns.parseAndValidateInputs(x,'bandpass',varargin);
というエラーが出てしまいました.
ヘルプセンターのコードを基に作成したのですが...うまくいきませんでした.
教えていただけますと幸いです.よろしくお願いします.
0 Comments
Answers (1)
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
on 30 May 2020
Edited: Shunichi Kusano
on 30 May 2020
NaNは考えていませんでした。確かにNaNを入れると同じエラーが出ましたので、それが原因だと思います。
数行ということでしたら解決策としては、fillmissing関数を使ってNaNを別な値に置き換える、もしくはliveeditorのタスク機能の「欠損データの削除」でも同じことができます(内部では同じ処理)。後者の方が、置き換え後のデータを確認しながらインタラクティブに処理できるのでおすすめです。
See Also
Categories
Find more on Butterworth in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!