2009-09-28 7 views
8

Matrixクラスにはどのようにベクトルとコンポーネントを編集するメソッドがありませんか?行列の中のすべてが読み込み可能だが書き込まれていないようだ。私は間違っていますか?いくつかのサードパーティのエレガントなMatrixクラスがあると、行を削除して意図的に編集することができますか?Rubyの限定マトリックス

このようなクラスがない場合はお知らせください。検索を停止します。

+0

これで何をしているのか説明できますか? – khelll

+0

私は '悪い'行と列(全体がゼロで構成されています)を探していて、次にそれらを削除したいと思います。私はすでにそれを行うコードを持っていますが、配列を介して完全に書かれています。それにもかかわらず、私はより正確できれいな解決策を見つけようとしています。 – gmile

答えて

5

クラスMatrixの設計者は、不変のデータ構造と機能プログラミングのファンであったに違いない。はい。それで合っています。

いずれにしても、必要なものに対して簡単な解決策があります。何ができるのかをMatrixとし、.to_aを使って実際の配列を取得してください。

>> Matrix.identity(2).to_a 
=> [[1, 0], [0, 1]] 

Numerical Ruby Narrayも参照してください。クラスをモンキーにして、より多くの動作を追加することもできます。これを行う場合は、Matrixのサブクラスにパッチを当ててください。 (require dクラスのより多くの動作を望むRubyライブラリプロジェクトがあり、それらを直接変更して新しいファイルをいくらか毒性を持たせます。

ああ、 khelll(:-)おそらく、あなたが望むことをするための方法がかなりあると私は言っているでしょう。in a functional styleつまり、古いオブジェクトを変更するのではなく、新しいオブジェクトを作成します。

+0

Hmm、Ok、多分あなたは正しいのです – gmile

+0

+1不変性と関数型プログラミングに言及したので、私はあなたが何をしたいのか尋ねました。 – khelll