アナログ入力の値をプロットしてそのグラフの最大振幅を求めるプログラムの正当性について
Show older comments
以下の方法でそれぞれ、アナログ入力値取得(参考: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という値が何を示しているのかわからないので、正当性が判断できません。

出力値
2.4023
0.2183
4 Comments
horizon
on 24 Apr 2019
Yoshio
on 24 Apr 2019
"[yupper,ylower] = envelope(x,fl,'analytic') は、この入力シーケンスの解析信号の振幅を使用して決定された x の包絡線を返します。解析信号は、長さ fl のヒルベルト FIR フィルターで x をフィルター処理することによって計算されます。この構文は、2 つの引数のみを指定した場合に使用されます。”
アナログ、デジタルに関係なく、求めたい最大振幅値とは何かを考えてください。
1.両側のピークからピークまでの振幅の最大値
2.移動 RMS 包絡線の最大値
3.ピーク包絡線の最大値
等色々あります。
包絡線の場合、平滑化する時定数(フィルタ長)はどうするかも決める必要がありますが、これは、出力引数なしで envelope を呼び出し、信号と信号の包絡線をプロットすればある程度判断できると思います。
horizon
on 24 Apr 2019
Answers (0)
Categories
Find more on マルチレート信号処理 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!