波形解析の際のbandpassfilterの使用について
20 次查看(过去 30 天)
显示 更早的评论
波形処理のために以下のコードでフィルタリングをしようとしています.
y=bandpass(x,[50 450],fs)
しかし,
エラー: signal.internal.filteringfcns.parseAndValidateInputs (line 62)
入力データは、有限で非スパースの、倍精度または単精度のベクトルまたは行列でなければなりません。
エラー: bandpass (line 103)
opts = signal.internal.filteringfcns.parseAndValidateInputs(x,'bandpass',varargin);
というエラーが出てしまいました.
ヘルプセンターのコードを基に作成したのですが...うまくいきませんでした.
教えていただけますと幸いです.よろしくお願いします.
0 个评论
回答(1 个)
Shunichi Kusano
2020-5-29
エラーメッセージを見ると「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 个评论
Shunichi Kusano
2020-5-30
编辑:Shunichi Kusano
2020-5-30
NaNは考えていませんでした。確かにNaNを入れると同じエラーが出ましたので、それが原因だと思います。
数行ということでしたら解決策としては、fillmissing関数を使ってNaNを別な値に置き換える、もしくはliveeditorのタスク機能の「欠損データの削除」でも同じことができます(内部では同じ処理)。後者の方が、置き換え後のデータを確認しながらインタラクティブに処理できるのでおすすめです。
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Butterworth 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!