class Labcom3::ArcData
Authors-
S.imazu
Version-
25.2.0
Date-
2024-11-18
[ 説明 ]¶ ↑
-
計測(保存)データクラス
-
計測データは、サンプリングデータおよびパラメータ、時間軸情報を保持する。
[ メンバー ]¶ ↑
start_time(double or integer)-
サンプリング開始時刻(double:sec, integer:pico-sec)
sampling_interval(double or integer)-
サンプリングインターバル(double:sec, integer:pico-sec)
num_of_times(integer)-
時間軸データ数(サンプリング数と異なる場合がある。)
- samples (
ArcSamplesオブジェクト orArcFramesオブジェクト) -
サンプリングデータ
- samples (
- parameters (ディクショナリ)
-
パラメータ
[ クラスメソッド ]¶ ↑
-
new(
start_time=nil,sampling_interval=nil, samp_data=nil, samp_params=nil,num_of_times=nil)
[ インスタンスメソッド ]¶ ↑
-
valWithThinning( n_thinning) -
set_parameters( dict_obj) -
add_parameters( dict_obj) -
add_parameter( param_name, param_value, param_type) -
set_data( obj) -
set_samples( dtype, data, bsize=nil) -
init_frames( i_type, x_size, y_size) -
add_frame( binary_str, bsize=nil)
[ UPDATE履歴 ]¶ ↑
- 18.0.0
-
初版
- 19.0.0
-
-
内部データの時間単位を整数時はピコ秒とした。(倍精度時は秒)
-
時間軸データ数は、疑似フレームデータをサポートすることにより、異なる場合があるので、メンバ変数で管理する。
-
更新: initialize(),
time(),set_time() -
追加:
num_times()
- 22.0.0
-
追加:
converted_rgb() - 23.0.0
-
追加:
valWithThinning( n_thinning=1) - 25.2.0
-
NArray to Numo::NArray
-
Attributes
時間軸データ数(サンプリング数と異なる場合がある。)
パラメータ
サンプリングデータ
サンプリングインターバル(double:sec, integer:pico-sec)
サンプリング開始時刻(double:sec, integer:pico-sec)
Public Class Methods
- 引 数
-
start_time(double or integer) -
サンプリング開始時刻
-
sampling_interval(double or integer) -
サンプリングインターバル
- samp_data (
ArcSamplesオブジェクト orArcFramesオブジェクト) -
データ
- samp_params (ディクショナリ)
-
パラメータ
-
num_of_times(integer) -
時間軸データ数
-
- 説 明
-
コンストラクタ
# File lib/labcom3/ArcData.rb, line 77 def initialize( start_time=nil, sampling_interval=nil, samp_data=nil, samp_params=nil, num_of_times=nil) @start_time = start_time @sampling_interval = sampling_interval @num_of_times = num_of_times set_data( samp_data) set_parameters( samp_params) end
Public Instance Methods
- 引 数
- binary_str(string)
-
データ一次元配列(binary string)
- bsize(int)
-
バイトサイズ
- 返 値
-
なし
- 例 外
-
RuntimeError
- 説 明
-
メンバー変数(samples)に1フレームのデータを追加する。
# File lib/labcom3/ArcData.rb, line 432 def add_frame( binary_str, bsize=nil) if nil != @samples then @samples.add_frame( binary_str, bsize) else raise RuntimeError, 'No initialize samples(ArcFrames).' end end
- 引 数
- param_name(string)
-
追加するパラメータ名
- param_value(int,double,string,..)
-
追加するパラメータ値
- param_type(int)
-
追加するパラメータの型コード
- 返 値
-
なし
- 説 明
-
メンバー変数(parameters)にパラメータを追加する。
型コード:1(String), 2(byte), 3(int16), 4(int32), 5(float), 6(double), 7(int64)
# File lib/labcom3/ArcData.rb, line 325 def add_parameter( param_name, param_value, param_type) if nil == @parameters then @parameters[param_name] = param_value @parameters[param_name+'#PTYPE'] = param_type else @parameters.store(param_name,param_value) @parameters.store(param_name+'#PTYPE', param_type) end end
- 引 数
- dict_obj(dict)
-
追加するパラメータオブジェクト
- 返 値
-
なし
- 説 明
-
メンバー変数(parameters)にパラメータオブジェクトを追加(マージ)する。
引数の型チェックをしていない。
# File lib/labcom3/ArcData.rb, line 303 def add_parameters( dict_obj) if nil == @parameters then @parameters = dict_obj else @parameters.merge( dict_obj) end end
- 引 数
-
なし
- 返 値
-
配列データ(NArray)
- 説 明
-
計測データの frame データをRGB変換しNumo::NArrayクラスのオブジェクトで戻す。
# File lib/labcom3/ArcData.rb, line 144 def converted_rgb() return @samples.converted_rgb() if is_frame() return nil end
- 引 数
- i_type(string)
-
イメージタイプ
- x_size(int)
-
X方向サイズ
- y_size(int)
-
Y方向サイズ
- 返 値
-
なし
- 説 明
-
メンバー変数(samples)を
ArcFramesに初期化する。
イメージタイプ: ‘GRAY8’, ‘GRAY10’, ‘GREY8’, ‘GREY10’, ‘RGB’, ‘YUV’,…
# File lib/labcom3/ArcData.rb, line 412 def init_frames( i_type, x_size, y_size) @samples = ArcFrames.new( i_type, x_size, y_size) end
- 引 数
-
なし
- 返 値
-
true:フレーム構造である。 false:フレーム構造でない。 nil:サンプリングデータがない。
- 説 明
-
サンプリングデータの構造がフレーム構造であるかチェックする。
# File lib/labcom3/ArcData.rb, line 270 def is_frame() return nil if( nil == @samples ) return @samples.kind_of?(ArcFrames) end
- 引 数
-
なし
- 返 値
-
サンプリングデータのデータ件数(int)
- 説 明
-
配列データのデータ件数を戻す。
Frame形式の場合はフレーム数です。
# File lib/labcom3/ArcData.rb, line 160 def num() return nil if nil == @samples return @samples.num() end
- 引 数
-
なし
- 返 値
-
時間軸データのデータ件数(int)
- 説 明
# File lib/labcom3/ArcData.rb, line 254 def num_times() num_data = @num_of_times if nil != @num_of_times num_data = num() if nil == num_data return num_data end
- 引 数
-
なし
- 返 値
-
サンプリングインターバル(sec)
- 説 明
# File lib/labcom3/ArcData.rb, line 236 def sampling_interval_sec() return nil if nil == @start_time if( @sampling_interval.is_a?(Integer) ) then return @sampling_interval/1000000000000.0 else return @sampling_interval end end
- 引 数
- obj(
ArcSamples,ArcFrames) -
格納するデータオブジェクト
- obj(
- 返 値
-
なし
- 例 外
-
TypeError
- 説 明
-
メンバー変数(samples)にデータを格納(代入)する。
# File lib/labcom3/ArcData.rb, line 349 def set_data( obj) if nil == obj then @samples = obj elsif obj.kind_of?(ArcSamples) @samples = obj elsif obj.kind_of?(ArcFrames) @samples = obj else raise TypeError,'Object type(' + obj.class + ' ) is unsupported.' end end
- 引 数
- dict_obj(dict)
-
設定するパラメータオブジェクト
- 返 値
-
なし
- 説 明
-
メンバー変数(parameters)にパラメータオブジェクトを設定(代入)する。
引数の型チェックをしていない。
# File lib/labcom3/ArcData.rb, line 287 def set_parameters( dict_obj) @parameters = dict_obj end
- 引 数
- dtype(string)
-
データ型
- data(string)
-
データ配列(binary string)
- bsize(int)
-
バイトサイズ
- 返 値
-
なし
- 説 明
-
binary string形式のサンプリングデータをメンバー変数(samples)に格納する。
データ型 : ‘INT8’, ‘INT16’, ‘INT32’, ‘FLT32’, ‘FLT32’, ‘INT64’
# File lib/labcom3/ArcData.rb, line 394 def set_samples( dtype, data, bsize=nil) @samples = ArcSamples.new(dtype, data, bsize) end
- 引 数
-
start_time(double or integer) -
サンプリング開始時刻(double:秒, integer:ピコ秒)
-
sampling_interval(double or integer) -
サンプリング間隔(double:秒, integer:ピコ秒)
-
num_of_times(integer) -
時間軸データ数
-
- 返 値
-
なし
- 説 明
-
該当メンバー変数に代入する。
# File lib/labcom3/ArcData.rb, line 374 def set_time( start_time, sampling_interval, num_of_times=nil) @start_time = start_time @sampling_interval = sampling_interval @num_of_times = num_of_times end
- 引 数
-
なし
- 返 値
-
サンプリング開始時刻(sec)
- 説 明
-
Not first sample time
# File lib/labcom3/ArcData.rb, line 218 def start_time_sec() return nil if nil == @start_time if( @start_time.is_a?(Integer) ) then return @start_time/1000000000000.0 else return @start_time end end
- 引 数
-
なし
- 返 値
-
時間軸配列データ(Numo::NArray)
- 説 明
-
時間軸情報から配列を作成し戻す。
時間軸情報がない場合は、index配列になる。
# File lib/labcom3/ArcData.rb, line 177 def time() num_data = @num_of_times if nil != @num_of_times num_data = num() if nil == num_data return nil if nil == num_data # p 'sampling_interval.class : '+ @sampling_interval.is_a?(Integer).to_s #TODO # p 'start_time.class : '+ @start_time.class.to_s # TODO if nil == @sampling_interval then interval = 1 else interval = @sampling_interval end interval = 1 if 0.0 == interval if nil == @start_time then start_t = 0 else start_t = @start_time end # p 'interval.class : '+ interval.class.to_s #TODO # p 'start_t.class : ' + start_t.class.to_s #TODO if( interval.is_a?(Integer) && !(1 == interval && 0 == start_t) ) then return (start_t + interval * Numo::DFloat.new( num_data).indgen(1))/1000000000000.0 else return start_t + interval * Numo::DFloat.new( num_data).indgen(1) end end
- 引 数
-
なし
- 返 値
-
配列データ(Numo::NArray)
- 説 明
-
計測データのサンプリングデータをNumo::NArrayクラスのオブジェクトに変換し戻す。
# File lib/labcom3/ArcData.rb, line 106 def val() return nil if nil == @samples return @samples.val() end
- 引 数
- n_thinning(integer)
-
間引き 1/n
- 返 値
-
配列データ(Numo::NArray)
- 説 明
-
計測データのサンプリングデータをNumo::NArrayクラスのオブジェクトに変換し戻す。
# File lib/labcom3/ArcData.rb, line 124 def valWithThinning(n_thinning=1) return nil if nil == @samples if obj.kind_of?(ArcSamples) return @samples.valWithThinning(n_thinning) else return @samples.val() end end