【理化学計測】オウンドメディア:電気化学測定(02)
【理化学計測】オウンドメディア:電気化学測定(02)に関するFAQ
Q波形の立ち上がりをそろえて表示するサンプルパネル
Qファイルパスを分解したい。
TxSplit()関数を使用して下さい。FAMOS 7.2以降が必要です。
Ver. 7.1まではシーケンスで切り出して下さい。
例)
; Ver. 7.1まで
_path = "C:¥imc¥DatSINTEST1.DAT"
_delimiter = "¥"
_temp = _path
GrPath = GrNew()
GrPath:Path = _path
for _iii = 1 to 100 step 1
_name = "_" + TForm( _iii, "" )
_pos = TxWhere(_temp, _delimiter)
if 0 _pos
_leng = TLeng(_temp)
_part = TPart(_temp, 1, _pos-1)
_temp = TPart(_temp, _pos+1, _leng)
GrPath: = _part
else
GrPath: = _temp
break
end
end
Q三角波を作りたい。
Q階乗を計算したい。
QX軸を1/3オクターブラベル表示すると[目盛]の設定に「1月3日」と表示される。
QAscii Importで作成したインポートフィルターをシーケンスで使用したい。
Q加速度波形から変位を計算するサンプルパネル
Qエディットボックスの内容を動的に設定したい
QピンクノイズのRMSレベルと周波数バンドの関係は?
FAQ ID:x185
アナライザ設定ブラウザにはピンクノイズの設定パラメータとして、以下のパラメータがあります。
RMSレベルと下側・上側周波数と出力レベルの関係はどのようになりますか?
各パラメータを以下のように定義します。 下側周波数:Fmax = 50 [Hz] 上側周波数:Fmin = 20000[Hz] RMSレベル :RMS = 2[V]
各レベルは以下のようになります。
rms = RMS * SQRT(Ln(f2/f1)/Ln(Fmax/Fmin))ここで、f1,f2は対象周波数バンドです。
【オクターブバンドに対して】
1/3オクターブの場合、f1とf2の関係は一定で、1.26です。
rms = 2 * SQTR(LN(1.26)/Ln(20000/50)) => 392 [mV]【ナローバンドに対して】
以下のようになります。
f1 = fc + ENBW*dFreq/2
f2 = fc - ENBW*dFreq/2
ここで、
fc:中心周波数
dFreq:周波数分解能
具体的に中心周波数=10kHz、周波数分解能=50Hz、ENBW(ハニング)=1.5では、
rms(10KHz) = 2 * SQRT(Ln(10037.5/9962,5) /Ln(20000/50)) => 70.8 [mV]
QFFTアナライザの平均方法であるエクスポネンシャル平均とは?
FAQ ID:x118
FFTアナライザの平均方法として”エクスポネンシャル平均”という項目がありますが、これに設定すると指定回数を超えても停止しません。どのような方法なのか教えてください。
【リニア平均】
指定回数を設定してFFT解析を開始すると、毎回の解析結果の平均を求めます。また、指定回数に達すると解析は終了します。
【エクスポネンシャル平均】
指定回数分の解析結果に対して指数重みを掛けて平均を求めます。指定回数に達しても解析を終了せずに終了が指示されるまで解析を繰り返します。
指定回数に達成してもFFT解析を終了しないので、ランニング平均と呼ばれることもあります。
各々の算出方法は以下の通りです。
【リニア平均】
リニア平均の場合、以下のように計算を行います。
Yn=( X1 + X2 + X3 + ...... Xn)/N
ただし、
N : 平均回数
Yn : N回の平均結果
Xn : 毎回の解析結果
上式からも明らかなように各解析結果に対して等しい重みで平均を求めます。また、指定回数に達した場合に解析を終了します。
ここで、計算式を以下のように変形します。
Yn =( X1 + X2 + X3 + ...... Xn-1 + Xn)/N ------(1)
Yn-1=(X1 + X2 + X3 + ...... Xn-1)/(N-1) -------(2)
式(1)から式(2)を引くと以下のように変形できます。
Yn =(1/N)Xn + (N-1)/N ・ Yn-1 ------(3)
【エクスポネンシャル平均】
式(3)に対して、ここでは式を簡単にするために1/N=Aとします。
Yn =A・Xn + (1-A) ・ Yn-1
指定回数で解析を終了させず、常に計測を続けると考え、指定回数分の平均を行った場合には、式を展開して以下のようになります。
Yn =A・Xn + (1-A)・Yn-1
=A・Xn + (1-A)・{A・Xn-1 + (1-A)・Yn-2}
=A・Xn + (1-A)・A・Xn-1 + (1-A)2・n-2
=A・Xn + (1-A)・A・Xn-1 + (1-A)2・{A・Xn-2 + (1-A)・Yn-3}
=A・Xn + (1-A)・A・Xn-1 + (1-A)2・A・Xn-2 + (1-A)3・Yn-3}
上式では3回分しか計算しませんでしたが、各解析結果に対する重みが指数で掛ります。
例えば、A=0.1とした場合には、以下のようになります。
Yn =0.1・Xn + 0.9・0.1・Xn-1 + 0.92・0.1・Xn-2 + ......
=0.1・Xn + 0.09・Xn-1 + 0.081・Xn-2 + ......
このときの重みをグラフで示します。このように重みが指数関数となります。
Q文字列の一部を取得
FAQ ID:s050
文字列"This is a pen"から"is"取得します。
Result = TPart( "This is a pen", 6, 2)
結果は"is"となります。
例えば、"is"以降の文字列を取得したい場合、TxWhereやTLeng関数を使用すると取得できます。
Str1 = "This is a pen" ;検索される文字列 Str2 = "is" ;検索したい文字列 Leng1 = TLeng( Str1) ;検索する文字の長さ=13 Leng2 = TLeng( Str2) ;検索する文字の長さ=2 Position = TxWhere( Str1, Str2) ;検索する文字の位置=6 Result = TPart( Str1, Position, Leng1-Leng2+1) ;"is a pen"
Q縦軸の値をdBからLogに変更したい
FAQ ID:o006
OROSファイル(AE2)に記述されている値がdBとなっています。
従ってLogで表示するためには以下の手順に従ってください。
(1)リニアスケールに変更します。
result = idB( DATA)
ここで、デシベルに変換する際に参照値が設定されている場合があります。
【OROSでの確認】
参照値はOROSの画面に以下のように表示されています。
【FAMOSでの確認】
参照値は変数のプロパティ内のコメント欄に以下のように記述されます。
参照値を考慮して変換する場合には以下の式に従って下さい。
result = idB( DATA) * Yref0dB
(2)軸の表示方法をLogに変更します。
- カーブウィンドウのY軸をダブルクリック。以下のダイアログが表示されます。
- "リニア/ログ"メニューのログを選択します。
注意:
リニアスケールに一度変換すると、(2)のスケールを変更することにより、リニア・dB・ログスケールを自由に切り替えることができます。
Qのこぎり波を作りたい。
Q音圧(Pa)をdBに変換したい。dBを音圧(Pa)に変換したい。
Qデータ間が不等間隔のXY波形を等間隔データに変換するには?
Qパワースペクトル密度関数(PSD)の計算
FAQ ID:p008
計算結果を比較するために1ブロックを256点として、1番目の区間と2番目の区間、1&2をまとめた区間を考えます。
振幅スペクトラムの結果
1ブロック 0.63282
2ブロック 0.010443
トータル 0.321632
パワースペクトラム密度関数の結果
1ブロック 0.200231
2ブロック 0.000054502
トータル 0.100143
振幅スペクトラムの平均された値について
平均化されて算出された値は以下のように算出されます。
平均値 = (1ブロック+2ブロック) / 2
【計算例】
0.321632 = ( 0.63282 + 0.010443 )/2
パワースペクトラム密度関数の平均化された値について
パワースペクトル密度の算出は以下のようになります。
1ブロックのPSD = 1ブロックの振幅スペクトラム^2/周波数分解能(2Hz)
【計算例】
0.0200231 = ( 0.63282^2 )/2
平均化されて算出された値は以下のように算出されます。
平均値 = (1ブロック^2 + 2ブロック^2) / 2 /周波数分解能(2Hz)
【計算例】
0.100143 = ( 0.63282^2 + 0.010443^2 )/2
FFTアナライザーで計算される値との相違
FFTアナライザーなどでは以下のように算出されます。
平均値 = 平均化された振幅スペクトラム^2 /周波数分解能(2Hz)
【計算例】
0.0517236 = ( 0.0321632^2 )/2
また、等価ノイズバンド幅を考慮し
PSD = 平均化された振幅スペクトラム^2 /周波数分解能(2Hz) /等価ノイズバンド幅
等価ノイズバンド幅
Ver6.0までのFAMOS関数は等価ノイズバンド幅を考慮していません。
パワースペクトル密度関数を算出後に各ウィンドウに対応した等価ノイズバンド幅で除算してください。
Ver6.1以降のPowerDS*(), CrossPowerDS*()関数は等価ノイズバンド幅を考慮しているため除算は不要です。
サンプルシーケンス
;************************************************* ;PSD計算について ; データ長が256×2のデータを例にします。 ;************************************************* ;1ブロック目のデータ Base1 = CutIndex( ch__1, 1, 256) PDS1 = PowerDS_1( Base1, 256, 2, 0, 1) AMP1 = AmpSpectrumRMS_1( Base1, 256, 2, 0, 1) ;2ブロック目のデータ Base2 = CutIndex( ch__1, 1+256, 256+256) PDS2 = PowerDS_1( Base2, 256, 2, 0, 1) AMP2 = AmpSpectrumRMS_1( Base2, 256, 2, 0, 1) ;1&2ブロックのデータ Base3 = CutIndex( ch__1, 1, 256+256) PDS3 = PowerDS_1( Base3, 256, 2, 0, 1) AMP3 = AmpSpectrumRMS_1( Base3, 256, 2, 0, 1) ;----------------------------------------- ;1ブロックのピークに相当する各関数の振幅値について考察します。 ;周波数データの分解能は2Hzです。 ;----------------------------------------- A1 = Max(AMP1) Freq = Pos( AMP1, A1) A2 = Value( AMP2, Freq) A3 = Value( AMP3, Freq) ;平均化された値は次式と等価になります CompareA3 = (A1+A2)/2 P1 = Value( PDS1, Freq) P2 = Value( PDS2, Freq) P3 = Value( PDS3, Freq) ;パワースペクトル密度は次式で算出されます。 CompareP1 = A1^2/xDel?(AMP1) ;平均化されたパワースペクトル密度は次式で算出されます。 CompareP3 = (A1^2+A2^2)/2/xDel?(AMP1) ;FFTアナライザーなどで計算される値は次式となります。 CompareFFT = Sqrt(A3^2/xDel?(AMP3)/ENBW)
Qリストで選択された項目をインデックスを取得したい
Qマクロレッスン:外部アプリケーションとの連携
FAQ ID:x013
外部アプリケーションとやり取りする簡単なマクロを紹介します。
最初にNVGateツールタブ内のマクロ項目の”新規"を選択してください。
下記ダイアログが表示されます。
リストの先頭にあるマクロ名を選択して、プロパティボタンをクリックしてください。
以下に示すように3つの変数を作成してください。
名前 | 形式 | 値 | |
---|---|---|---|
bFlg | 論理型 | 成功(True) | デフォルト値は何でも構いません |
intPara | 整数型 | 0 | デフォルト値は何でも構いません |
MyStr | 文字列型 | まだ設定されていません |
後で取り扱いやすくするために最初にマクロ名を変更しましょう。
保存ボタンをクリックしてください。"マクロ4"という名前で保存されます。
一度マクロエディターを閉じ、ツールタブ内のマクロ項目の”管理"を選択してください。
リストに"マクロ4"がありますので、これを選択し、"プロパティ"ボタンをクリックしてください。
名前を"testExecMacro"に変更します。
"OK"ボタンを押してください。
再度、マクロを編集しますので、"testExecMacro"を選択して、"編集"ボタンをクリックしてください。
マクロの作成
intParaの値に応じて処理を分岐させ、分岐後にメッセージボックスを表示させます。そのために、下図のようにifとメッセージボックスを組み合わせます。
メッセージボックスは以下のように表示する文字列を変数"MyStr"に設定してください。
マクロの実行
このままマクロを実行させると以下のようにintPara=0の分岐のメッセージボックスが表示され、文字列として最初に設定した"まだ表示されていません"が表示されます。
外部コマンドから実行
外部からNVGateにコマンドを送ります。NVGateにコマンドを送る場合は、ハイパーターミナルやTera Termのような端末エミュレータを使用するか、NVDriveを利用してコマンド送信プログラムを作成してください。今回は、Tera Termを使用します。Tera Term(TCP/IP ポート3000)を起動させて、以下のコマンドを実行させてください。
この結果、オプションパラメータにより分岐は"intPara=1"を実行して、文字列の内容を"abc"に変更します。