GSL Shell 学習:配列定義あれこれ

2016-03-02 :  PCクリニック

本文の前に、
-・・・ -・-
現時点での blogramのランクインカテゴリは、
7、2、0、0、1、 0、0、0、0、0(40)で、換算ポイント 88pt 。
「Perl」「化学業界」「硝子業界」「FM COCOLO」「e-radio」、
「グルコサミン」「Python」「Firefox」bg値変動のみ。
「C言語」「FM青森」全く変化無し。
・-・ - -・

さて、本文。(これも Lua 学習?)


“Lua”→“LuaJIT”→“GSL Shell”と機能拡大してきたので、
配列(1次元はベクトル、2次元はマトリックス/行列 ?)
もいろいろ出てきた。

ここで、それぞれの定義/使用 方法をまとめた。


1.基本 Lua

Lua ドキュメントの日本語訳:「Lua 5.2 リファレンスマニュアル
で“配列”と検索すると、
  ・・・・・
  ・・・・・
  テーブル 型は連想配列を実装しています。つまり数値だけでなく
   任意の値 (nil と NaN を除く) をインデックスとして使えます
   (NaN とは Not a Number の略で、 0/0 のような未定義もしくは
   表現不可能な結果を表現するために使う特殊な数値です)。
  テーブルは 異種混合 できます。
   つまり、 任意の型の値 (nil を除く) を格納できます。
  値に nil を持つキーはテーブルの一部と見なされません。
  逆に言うと、 テーブルの一部でないキーは値に nil が
   関連付けられています。
  ・・・・・
  ・・・・・
と云うことですね。
2次元テーブルは、「テーブルのテーブル」と云うこと?
そして、添字は“1”から始まる。


2.LuaJIT で追加された“FFI”

2ヶ月前(2016-01-24)の記事:「Lua 学習:FFI・cdata
で書いた。

基本的に“C言語”の仕様。
だから、1次元、2次元とも C の文法。
そして、添字は“0”から始まる。


3.GSL Shell で追加されたもの2種類

3-1.「GSL shell documentation」の
第4章:「Matrices
 GSL Shell main data types are real and complex matrices and
  many of the GSL routines works on this kind of data.
 GSL Shell does not have a separate type to represent a vector
  but column matrices are used for this purpose.

===例の翻訳サイトの結果:

 GSL シェル メイン データ型実数および複素数の行列と
  GSL ルーチンの多くは、この種のデータです。
 GSL シェルはベクトルを表すための別の型ではありませんが、
  列行列がこの目的のために使用されます。

?????

それと、
3-2.先日(2016-02-22)の記事:
GSL Shell 学習:General Data Tables ( GDT )」で書いた、
第5章「General Data Tables
 General Data Tables, GDT in short, are used in GSL Shell
  to store data in tabular format.
 They are somewhat similar to matrices
  but have some notable differences.

 While in matrices columns are always unnamed in GDT tables
  they have names so that you can refer to
  a specific column by name.
 The other important difference is that the value in each cell
  does not need to be numeric but can be also a string
  or undefined.

===例の翻訳サイトの結果:

 表形式でデータを格納する GSL シェルで一般的なデータ テーブル、
  要するに、GDT の使用します。
 彼らは行列にやや似ていますが、
  いくつかの注目すべき違いがあります。

 行列の列が GDT テーブルで無名の常に間、名前によって特定の
  列を参照できるように、名前を持ちます。
 その他の重要な違いは、各セルの値が数値することができますする
  必要はないことも文字列または未定義します。

?????

つまりは、
“Matrices”と“GDT”は似たようなもの。
違いは、(GDTでは)
列に名前を持ち、数値以外も可能である。

そして、どちらも添字は“1”から始まる。


4.The GSL Shell Projectの、
GSL FFI interfaceで使える、
GSL - GNU Scientific Library

これは、C言語のライブラリなので、
基本的に“C言語”の仕様。
だから、添字は“0”から始まる。


その他に、画像データ、
先月(2016-02-23)の記事:「GSL Shell 学習:OpenCV 使えそうダ?
で書いた、「OpenCV」の“IplImage”型がある。

なお、2ヶ月前(2016-01-29)の記事:
Lua 学習:IM ( An Imaging Toolkit )
で書いた、
LIP (Lua Image processor)」では、
上記2の“FFI”で定義する。


これら、画像データは、今回は省略。


なので、上記5種類の“配列”について、“定義”“参照”書式を纏めた。

-- 1.Lua 標準 : テーブル
x = { 2, 4, 6 } -- 定義(例)
print( #x ) -- サイズ:3
x[1] = x[3] -- 代入/参照 ( 1オリジン )


-- 2.FFI : cdata Objects
local ffi = require'ffi'
x = ffi.new( 'double[3]', { 2, 4, 6 } ) -- 定義(例)
-- print( #x ) は、エラー:'double[3]' には長さ無し
x[0] = x[2] -- 代入/参照 ( 0オリジン )


-- 3-1.GSL shell : Matrices ( vector )
x = matrix.vec{ 2, 4, 6 } -- 定義(例)
print( #x ) -- サイズ:3
x[1] = x[3] -- 代入/参照 ( 1オリジン )


-- 3-2.GSL shell : GDT ( General Data Tables )
x = gdt.new( 2, 3 ) -- 2 rows, 3 columns 定義(例)
print( #x ) -- → 2
print( x:dim() ) -- → 2, 3
x:set(1,1) = x:get(2,3) -- 代入/参照 ( 1オリジン )


-- 4.GNU Scientific Library : ベクトル
local gsl = require'gsl'
x = gsl.gsl_vector_alloc(3) -- 定義(例)
w={ 1, 2, 3 }
for i = 0, 2 do
gsl.gsl_vector_set( x, i, w[i+1] )
end
-- print( #x ) は、エラー:'struct 166 *' には長さ無し
v = gsl.gsl_vector_get( x, 2 ) -- 参照 ( 0オリジン )
gsl.gsl_vector_set( x, 0, v ) -- 代入
-- 直接アクセス:( 構造体でデータ部をポイント )
x.data[0] = x.data[2]
と云うことでしょうか?


本日はここまで。


更なる学習ダ。


Lua ( GSL Shell ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


160204
関連記事
スポンサーサイト

コメントの投稿

管理者にだけ表示を許可する

おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
04 | 2017/05 | 06
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク