アナログ入力の値をプ​​ロットしてそのグラ​フ​の最大振幅を求め​るプログラムの正当性​について

7 views (last 30 days)
horizon
horizon on 24 Apr 2019
Commented: Yoshio on 26 Apr 2019
以下の方法でそれぞれ、アナログ入力値取得(参考:Acquire Data Using NI Devices)とグラフの最大振幅(参考:どうすれば最大振幅値を求められますか)取得を組み合わせたプログラムを書きました。
組み合わせたプログラム
s = daq.createSession('ni');
ch = addAnalogInputChannel(s,'Dev1', 'ai1', 'Voltage');
s.Rate = 8000;
data = s.inputSingleScan;
disp(data)
s.DurationInSeconds = 2;
[data,time] = s.startForeground;
plot(time,data);
xlabel('Time (secs)');
ylabel('Voltage')
[up,lo] = envelope(data,300);
maxAmplitude = peak2peak(up-lo);
disp(maxAmplitude)
実行すると以下の一例として以下の出力が出るのですが、envelopeの300という値が何を示しているのかわからないので、正当性が判断できません。
無題.png
出力値
2.4023
0.2183
また、MATLAB上で式を用いて描画するような場合(参考:どうすれば最大振幅値を求められますか)と比べてアナログ入力値を扱う場合は変更しなければならないことはあるのでしょうか。
  4 Comments
horizon
horizon on 24 Apr 2019
コメントいただきましてありがとうございます。
求めたい最大振幅値は、1.両側のピークからピークまでの振幅の最大値になります。
解析信号は、長さ fl のヒルベルト FIR フィルターで x をフィルター処理することによって計算されます。
とご説明いただきましたが、その場合 flはどのように考えたらいいのでしょうか。
ヒルベルト変換についての知識がないため、当方だけでの判断が難しく、アドバイスをいただきたく存じます。
Yoshio
Yoshio on 26 Apr 2019
ヒルベルト変換を使った包絡線の検出については、こちらに理論的な解説がありますが、
フィルターの長さを調整することで包絡線をうまく抽出できるようにします。
包絡線抽出に出ている例を参考に、パラメータを変えて、信号に適用した結果をグラフ化し、判断してみてください。
以下の部分です。
”関数 envelope を使用して、信号の包絡線を直接生成したり、計算方法を変更することもできます。たとえば、解析包絡線の検出に使用されるヒルベルト フィルターの長さを調整できます。使用するフィルター長が短すぎると、歪んだ包絡線になります。”

Sign in to comment.

Answers (0)

Categories

Find more on 用途 in Help Center and File Exchange

Products


Release

R2017b

Community Treasure Hunt

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

Start Hunting!