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

以下の方法でそれぞれ、アナログ入力値取得(参考: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 Kommentare

horizon
horizon am 24 Apr. 2019
テスター(小型電流電圧計)で電位差を測ったところ約2.4Vだったので出力値は正しいと思います。
しかし、envelopeの300とアナログ入力の場合の最大振幅値の測り方について注意すべき点があれば教えていただきたいです。
Yoshio
Yoshio am 24 Apr. 2019
まずenvelopeを読んで、オプションの意味を理解されてください。
"[yupper,ylower] = envelope(x,fl,'analytic') は、この入力シーケンスの解析信号の振幅を使用して決定された x の包絡線を返します。解析信号は、長さ fl のヒルベルト FIR フィルターで x をフィルター処理することによって計算されます。この構文は、2 つの引数のみを指定した場合に使用されます。”
なお、ヒルベルト変換を使った包絡線抽出についての説明とヒルベルト フィルターの長さに関する説明があります。
アナログ、デジタルに関係なく、求めたい最大振幅値とは何かを考えてください。
1.両側のピークからピークまでの振幅の最大値
2.移動 RMS 包絡線の最大値
3.ピーク包絡線の最大値
等色々あります。
包絡線の場合、平滑化する時定数(フィルタ長)はどうするかも決める必要がありますが、これは、出力引数なしで envelope を呼び出し、信号と信号の包絡線をプロットすればある程度判断できると思います。
horizon
horizon am 24 Apr. 2019
コメントいただきましてありがとうございます。
求めたい最大振幅値は、1.両側のピークからピークまでの振幅の最大値になります。
解析信号は、長さ fl のヒルベルト FIR フィルターで x をフィルター処理することによって計算されます。
とご説明いただきましたが、その場合 flはどのように考えたらいいのでしょうか。
ヒルベルト変換についての知識がないため、当方だけでの判断が難しく、アドバイスをいただきたく存じます。
Yoshio
Yoshio am 26 Apr. 2019
ヒルベルト変換を使った包絡線の検出については、こちらに理論的な解説がありますが、
フィルターの長さを調整することで包絡線をうまく抽出できるようにします。
包絡線抽出に出ている例を参考に、パラメータを変えて、信号に適用した結果をグラフ化し、判断してみてください。
以下の部分です。
”関数 envelope を使用して、信号の包絡線を直接生成したり、計算方法を変更することもできます。たとえば、解析包絡線の検出に使用されるヒルベルト フィルターの長さを調整できます。使用するフィルター長が短すぎると、歪んだ包絡線になります。”

Melden Sie sich an, um zu kommentieren.

Antworten (0)

Kategorien

Produkte

Version

R2017b

Gefragt:

am 24 Apr. 2019

Kommentiert:

am 26 Apr. 2019

Community Treasure Hunt

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

Start Hunting!