時系列を表すために ILNumerics を使用しています。
理想的には、すべてのデータをオブジェクト指向でカプセル化して、インスタンス変数とインスタンス メソッドを使用してそのような変数を処理したいと考えています。
いくつか質問がありますが、すべて、効率的な方法で、おそらくインスタンス変数として、クラスに ILArray を実装する最良の方法は何かに関連しています。関連するドキュメントを読み、以前の SO の例を確認しましたが、これらの問題に明示的に対処しているようには見えません。
最初: 「配列利用クラス」の Web サイトで提案されている例 [ソース: http://ilnumerics.net/ClassRules.html ] は、少なくとも ILNumerics 試用版と VS 2013 プロフェッショナル (.net 4.5) ではコンパイルされないようです。 . 何か不足していますか?
それとも、コードのこの部分が原因ですか:
public ILRetArray<double> A
{
get
{
// lazy initialization
if (m_a.IsEmpty)
{
m_a.a = ILMath.rand(100,100);
}
}
set { m_a.a = value; }
returnステートメントがありませんか?
上記の例では、次のインスタンス メソッドを使用して m_a 配列を変更できます。
public void Do()
{
using (ILScope.Enter())
{
// assign via .a property only!
m_a.a = m_a + 2;
}
}
ベクトルの特定のコンポーネントにアクセスするにはどうすればよいでしょうか: m_a[0] = 2.2; のようなものが必要だとします。これはメモリ管理の邪魔になりますか?
一般的な観察として、ILNumerics を使用する自然な方法は、Fortran (またはおそらく R/Matlab) でコードを記述する場合と同様に、静的メソッドを使用することであると思われます。これが、これまでの使用方法です。インスタンス変数として ILArray 型を持ち、関連するメソッドを持つクラス定義は、効率的で簡単である必要がありますか?
または、System 配列をインスタンス変数として採用し、静的メソッドのみを介して ILarray にインポート/エクスポートして配列操作を実行することをお勧めしますか? 私はこの道を避ける傾向があるか、できるだけ制限したいと思っています。