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

2 ビュー (過去 30 日間)
horizon
horizon 2019 年 4 月 24 日
コメント済み: Yoshio 2019 年 4 月 26 日
以下の方法でそれぞれ、アナログ入力値取得(参考: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 件のコメント
horizon
horizon 2019 年 4 月 24 日
コメントいただきましてありがとうございます。
求めたい最大振幅値は、1.両側のピークからピークまでの振幅の最大値になります。
解析信号は、長さ fl のヒルベルト FIR フィルターで x をフィルター処理することによって計算されます。
とご説明いただきましたが、その場合 flはどのように考えたらいいのでしょうか。
ヒルベルト変換についての知識がないため、当方だけでの判断が難しく、アドバイスをいただきたく存じます。
Yoshio
Yoshio 2019 年 4 月 26 日
ヒルベルト変換を使った包絡線の検出については、こちらに理論的な解説がありますが、
フィルターの長さを調整することで包絡線をうまく抽出できるようにします。
包絡線抽出に出ている例を参考に、パラメータを変えて、信号に適用した結果をグラフ化し、判断してみてください。
以下の部分です。
”関数 envelope を使用して、信号の包絡線を直接生成したり、計算方法を変更することもできます。たとえば、解析包絡線の検出に使用されるヒルベルト フィルターの長さを調整できます。使用するフィルター長が短すぎると、歪んだ包絡線になります。”

サインインしてコメントする。

回答 (0 件)

製品


リリース

R2017b

Community Treasure Hunt

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

Start Hunting!