最終更新: keisuketsushima 2011年11月16日(水) 14:44:02履歴
VArrayは仮想配列クラスで、多次元配列データをメモリ上(NArray、NArrayMiss)あるいはファイル中(NetCDFVar等)に保持します。ファイル中のデータの操作はVArrayNetCDF等のサブクラスによって行われ、この基礎クラスでは以下の二つの場合を操作します。
VArrayはちょうどNArrayと似た振る舞いをします。つまり、数値の多次元配列です。ただし、最も重要な違いとして、VArrayは一つの名前を持っており、NetCDF変数のように"属性"を保有することができます。そのため、VArrayはNetCDFVarを完璧に表現することができます。これは、VArrayNetCDFサブクラスによって実現されます。
- NArrayでメモリー上に保持されたデータの場合
- 別のVArrayサブセットの場合(VArrayNetCDF等のサブクラスも可)
VArrayはちょうどNArrayと似た振る舞いをします。つまり、数値の多次元配列です。ただし、最も重要な違いとして、VArrayは一つの名前を持っており、NetCDF変数のように"属性"を保有することができます。そのため、VArrayはNetCDFVarを完璧に表現することができます。これは、VArrayNetCDFサブクラスによって実現されます。
- value(値) : VArrayに含まれる多次元数値配列、もしくはその内容
- attribute(属性) : 一つのVArrayを説明する名前とデータの組み合わせ。通常はNumRu::Attributeクラスで実現される(もしくはVArrayNetCDFの中のNetCDFAttrのこと)。名前は文字列でなければならず、その属性値の型はNetCDFAttrと互換性のある少数のクラスに制限される(NumRu::Arrtibute参照)
- narray (NArray or NArrayMiss, 初期値: nil) : 保持する配列。(nilは、protectedメドッドによって別のVArrayへのマッピングを初期化するために使用)
- attr (NumRU::Attribute, 初期値: nil) : 属性。nilの場合は、空白。
- 属性オブジェクトが生成・保持される
- name (String, 初期値: nil) : VArrayの名前。nilの場合は"noname"が入る。
- ntype (String or NArray constants) : 保持するNArrayの数値型(sfloat, float, NArray::SFLOAT, NArray::FLOATなど)
- shape (Array of Integers) : NArrayの形状
- attr (Attribute; 初期値: nil) 属性。nilの場合、空の属性オブジェクトが生成・保持される
- name (String; 初期値: nil) VArrayの名前
NArray(もしくはNArrayMiss)として値を返す。
これはVArrayが他にマッピングしている場合でも同様である。また、 サブクラスで同様のことをするためにはこのメソッドを再定義しなければならない。
これはVArrayが他にマッピングしている場合でも同様である。また、 サブクラスで同様のことをするためにはこのメソッドを再定義しなければならない。
値を設定。
全ての値が設定される。部分的に設定したい場合は、[]=を使用する。このメソッドでは、値はnarrayから読み込まれ、内部のホルダーに設定される。そのため、例えば、narrayの数値型に関わらず数値型は変化しない。全体をnarrayで置き換えたければreplace_valを使用する。
全ての値が設定される。部分的に設定したい場合は、[]=を使用する。このメソッドでは、値はnarrayから読み込まれ、内部のホルダーに設定される。そのため、例えば、narrayの数値型に関わらず数値型は変化しない。全体をnarrayで置き換えたければreplace_valを使用する。
- narray (NArray or NArrayMiss or Numeric) : 数値の場合は全値がそれに等しくなるように設定される。NArray(もしくはNArrayMiss)の場合は、その形状がVarrayの形状と合致してなければならない。
- String ("byte", "sint", "int", "sfloat", "float", "scomplex" "complex", "obj")
- これはNArray.new内で別のNArrayを初期化する際にも使用可能
remane!と同じ。ただし、VArrayオブジェクトを複製し、それに名前を設定する。
ただし、たまにオリジナルを変化させないかどうか疑わしいときがあるので、サブクラスではサポートされないこともある。
ただし、たまにオリジナルを変化させないかどうか疑わしいときがあるので、サブクラスではサポートされないこともある。
vary = VArray.new2( "float", [10,2]) vary.reshape!(5,4) # changes the vary vary.copy.reshape!(2,2,5) # make a deep clone and change it # This always works with a VArray subclass, since vary.copy # makes a deep clone to VArray with NArray.
(selfが座標変数の場合のみ有効)selfが周期的で、かつ周期的に拡張可能ならばtrueを返す。(dxを平均的な増加量とすると、両端の間にmodulo-dxと等しい距離を持つ)
VArrayは数値的な多次元配列なので、NArrayに含まれるほとんどのメソッドや演算子をサポートしています。ここで、それらのメソッドの名前を示します。それぞれの使用法については、NArrayのドキュメントを参照してください。
sqrt, exp, log, log10, log2, sin, cos, tan, sinh, cosh, tanh, asin, acos, atan, asinh, acosh, atanh, csc, sec, cot, csch, sech, coth, acsc, asec, acot, acsch, asech, acoth
-, +, *, /, %, **, .add!, .sub!, .mul!, .div!, mod!, >, >=, <, <=, &, |, ^, .eq, .ne, .gt, .ge, .lt, .le, .and, .or, .xor, .not
最新コメント