FAMOS
数値に関するFAQ
Q文字列形式から数値以外の文字を除いて数値形式に変換したい。
Q決定係数を求めたい。
直接求める関数は用意されてないため、下記の様なシーケンスで求めて下さい。 近似波形の係数を求めるために使用しているApproNonLin()関数はimc FAMOS Ver 7.2以降のProfessional版以上が必要です。
例)
LOAD sintest1
_data = sintest1 ; サンプルデータ
_A = ApproNonLin(_data,"A1*sin(A2*PI2*x)-y") ; 近似波形の係数
_approx = _A[1] * sin(_A[2] * PI2 * ramp(0, XDel?(_data), Leng?(_data))) ; 近似波形
_numerator = Sum((_data - _approx)^2) ; ①分子: 残差の二乗和
_denominator = Sum((_data - Mean(_data))^2) ; ②分母: 標本値の平均からの差の二乗和
R2 = 1 - _numerator / _denominator ; 決定係数: ①を②で割ったものを1から引いた値
; カーブウィンドウに表示
CwNewWindow("Cv1", "show")
CwSelectWindow("Cv1")
CwAction("reset")
CwPosition(0,0,640,480)
CwDisplaySet("title", "")
CwNewChannel("append last axis", _data)
CwNewChannel("append last axis", _approx)
CwNewElement("marker.text")
CwMarkerSet("x.type", 2)
CwMarkerSet("x", 73)
CwMarkerSet("y.type", 2)
CwMarkerSet("y", 80)
CwMarkerSet("font.size", 12)
CwMarkerSet("text", "決定係数=" + TForm(R2, "F1.3"))
Q尖度を求めたい。
直接求める関数は用意されてないため、下記の様なシーケンスで求めて下さい。
例)
_data = Random(10000, 2, 0, 0, 0) ; 正規分布に従ったサンプルデータ
_Hist = Histo(_data, 0, 0) ; 分布の形状の目視確認用
_StDev = StDev(_data) ; 標準偏差σ
_Mean = Mean(_data) ; 平均
_N = Leng?(_data) ; データ点数
Kurtosis = Sum((_data - _Mean)^4) / _StDev^4 / _N
{Kurtosis-3} = Kurtosis - 3 ; 正規分布が尖度0とする定義
; Excel KURT()相当
;
https://support.office.com/ja-jp/article/kurt-%E9%96%A2%E6%95%B0-bc3a265c-5da4-4dcb-b7fd-c237789095ab
; より
_v1 = _N*(_N+1) / ((_N-1)*(_N-2)*(_N-3))
_v2 = Sum((_data - _Mean)^4) / _StDev^4
_v3 = 3*(_N-1)^2 / ((_N-2)*(_N-3))
ExcelKurt = _v1 * _v2 - _v3
Q等価騒音レベルを求めたい。
Q異常値を除いた平均を求めたい。
Q中央値を求めたい。
Sort()関数で並べかえ後、50%目のインデックスでの値が中央値になります。第1四分位数、10%値等も同様に求めることができます。
例)
Load slope
_data = slope ; サンプルデータ
_sort = Sort(_data, 1)
_pt = Leng?(_data) ; データ点数
Median = _sort[_pt * 0.5] ; 中央値
FirstQuartile = _sort[_pt * 0.25] ; 第1四分位数
ThirdQuartile = _sort[_pt * 0.75] ; 第3四分位数
InterquartileRange = ThirdQuartile - FirstQuartile ; 四分位範囲
{10percentile} = _sort[_pt * 0.1] ; 10%値
{90percentile} = _sort[_pt * 0.9] ; 90%値
Q階乗を計算したい。
Q音圧(Pa)をdBに変換したい。dBを音圧(Pa)に変換したい。
Q底が2の対数を計算したい。
Q数値からチャンネル名などの文字列を作成したい。
QXY波形の各点の値をインデックスを指定して取得するには?
Q行列の要素を取り出したい
Q四捨五入するためには?
Q桁数を指定して四捨五入するためには?
FAQ ID:s061
例えば、4.5637という数値を
小数点以下1桁で4.6
小数点以下2桁で4.56
小数点以下3桁で4.564
のように桁数を指定して数値を四捨五入したいのですが、可能ですか?
直接、桁数を指定して四捨五入する関数はありません。
桁数と関数Floorを使用して実現することができます。
【例】
4.5637を小数点以下1桁で四捨五入する。
Digit = 1 Result = Floor(4.5637*10^Digit+0.5)/10^Digit = 4.6
【例】
4.5637を小数点以下2桁で四捨五入する。
Digit = 2 Result = Floor(4.5637*10^Digit+0.5)/10^Digit = 4.56
【例】
4.5637を小数点以下1桁で四捨五入する。
Digit = 3 Result = Floor(4.5637*10^Digit+0.5)/10^Digit = 4.564
Q数値を切り捨てするためには?
Q数値を切り上げするためには?
Qビット演算
FAQ ID:s022
ビットデータを取得するためには以下の関数を使用してください
;DATAの3ビット目を取得します。 Bit3 = Mod( Floor( Data / 2^3 ), 2)
Example
65535までの値を各ビット毎に取得します。
;サンプルデータの生成 Data_DEC = Ramp( 0, 1, 2^16) i=0 While i<16 Result = "BIT" + TForm( i, "F00") <Result> = Mod( Floor( Data_DEC / 2^i ), 2) SetDataFormat(<Result>, 8, 0, 0) i=i+1 End
ちなみにMicrosoft Excelでは"DEC2BIN"という関数を使用しますが、符号ビット+9bitまでしか計算できません。