低域通過フィルタについて

15 visualizaciones (últimos 30 días)
N/A
N/A el 29 de Oct. de 2019
Comentada: N/A el 31 de Oct. de 2019
Trace_1.mat ( 横軸:時間(s)、縦軸:電圧値(V)のデータ ) に
理想的な低域通貨フィルタ (周波数が10MHz以下なら利得あり、10MHzより大きければ利得0) をかけたいです。
そこで、 matlabのコマンドウィンドウにて、「y = lowpass(Trace_1,10e+6)」とプログラムを入力しましたが、「関数 'lowpass' (タイプ'double' の入力引数) が未定義です。」というエラーが出てきました。どのようにコマンドを入力すれば低域通過フィルタがかけられますか?ご回答頂けたら幸いです。

Respuesta aceptada

Shoumei
Shoumei el 30 de Oct. de 2019
なんでimbinarizeなどが必要なのかわかりませんが、フィルタの使い方が間違っているのが原因です。
まず、理想的なフィルタは存在しません。LPFであれば通過帯域から遮断帯域までの肩特性は斜めに下がっていきますし、遮断帯域の信号の振幅は0にはなりません。
Junyaさんのデータは、1列目が時間軸データ、2列目が振幅データとなっているようですが、lowpassコマンドの1つ目の引数に時間軸データは必要ありませんので、振幅データのみを入力する必要があります。
信号は10MHzの信号と高調波ノイズで構成されているようですが、この高調波ノイズを除去したいのでしょうか?このように書くと良いのでは?
% 入力信号を表示
subplot(2,1,1),plot(Trace_1(:,1), Trace_1(:,2))
% フィルタリング
y = lowpass(Trace_1(:,2),10^6,10^7);
% フィルタリングされた信号を表示
subplot(2,1,2),plot(Trace_1(:,1), y)
フィルタの特性を理想に近づけたく、肩特性を急峻にしたい場合はSteepnessパラメータを1に近い値にします。
y = lowpass(Trace_1(:,2),10^6,10^7, 'ImpulseResponse','iir','Steepness',0.96);
subplot(2,1,2),plot(Trace_1(:,1), y)
使い方はドキュメントに載っているのでドキュメントをよく読みましょう。
doc lowpass
  1 comentario
N/A
N/A el 31 de Oct. de 2019
ご回答頂きありがとうございます。
R2018aでプログラムを実行したところ、「関数 'lowpass' (タイプ'double' の入力引数) が未定義です。」というエラーが消え、LPFにかけることが出来ました。

Iniciar sesión para comentar.

Más respuestas (1)

Yoshio
Yoshio el 29 de Oct. de 2019
lowpass のドキュメントを参考に、Trace_1.mat の中から電圧波形データを取り出して、lowpassの関数に入力しましょう。今の場合
y = lowpass(x,fpass,fs) は、xfs Hz のレートでサンプリングするよう指定します。fpass は Hz 単位でのフィルターの通過帯域周波数です。
を使うのが便利そうです。
  5 comentarios
Yoshio
Yoshio el 30 de Oct. de 2019
Editada: Yoshio el 30 de Oct. de 2019
コマンドウィンドウに
which lowpass
と入れて、何が帰ってきますか?
なお y = lowpass(x,fpass,fs) のfsは、信号xのサンプル周波数ですでに決まっていますから、
t = Trace_1(:,1);
x = Trace_1(:,2);
fs = 1/(t(2)-t(1))
fs =
2.0000e+09
すなわち、2GHzを設定すべきだと思います。
plot(t,x)
でプロットして、正しく信号が10Mzの正弦波であることを確認してみてください。
N/A
N/A el 31 de Oct. de 2019
ご回答頂きありがとうございます。
% 入力信号を表示
subplot(2,1,1),plot(Trace_1(:,1), Trace_1(:,2))
% フィルタリング
y = lowpass(Trace_1(:,2),10^6,2e+9, 'ImpulseResponse','iir','Steepness',0.999);
% フィルタリングされた信号を表示
subplot(2,1,2),plot(Trace_1(:,1), y)
というプログラムをR2018aで実行したところエラーが出ませんでしたが,R2017aとR2016bで実行したところ、「関数 'lowpass' (タイプ'double' の入力引数) が未定義です。」というエラーがでました。R2018aにてコマンドウィンドウにwhich lowpassで検索したところ、「C:\Program Files\MATLAB\R2018a\toolbox\signal\signal\lowpass.m」と帰ってきたので、R2017aとR2016bにはlowpass関数自体が入ってないと思われます。
また、plot(t,x)でプロットしたところ、1周期あたりの時間が0.1μsだったので10MHzの正弦波であると思います。

Iniciar sesión para comentar.

Categorías

Más información sobre 振動解析 en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2017a

Community Treasure Hunt

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

Start Hunting!