C++マトリックスクラス

このエントリーをはてなブックマークに追加
1テンションアホ
C++愛好者の皆さん,マトリックスクラスは何をお使いですか?
4則演算等はもちろんのこと,LU,固有値,特異値,一般逆等
もサポートされているものが望ましいです.

Lapack++やtntは激速だけど,使用が不完全すぎます. かと
言って,ちまたのwebで素人が配布してるのは遅すぎるし,ド
キュメントが充実していないのがほとんどです.

この際,Lapack並みの速さは求めないとして,ドキュメントの
充実しているC++マトリックスクラスは無いものでしょうか?
教えて下さい.
2名無しさん@1周年:01/11/22 00:42
無い。

...と思う。
3テンションアホ:01/11/22 01:18
無いんですか...
では,皆様がお使いのマトリックスクラスは何ですか?
「自作!!」と胸を張って答えて下さる方,是非入手先を
教えて下さい.
ちなみに,僕自身はLapack++を渋々使っています.
4テンションアホ:01/11/22 01:38
こんなページ見つけました.
http://webnz.com/robert/cpp_site.html
でも,どれが良いんだろう?
(VineLinuxのVinePlusにはnewmatというのが入っている.)
52:01/11/22 08:37
>>4
ありがとう。
ちょっと探検してみます。
6名無しさん@1周年:01/11/22 12:38
そんなに行列を使いたいなら、Cでなくてもいいでしょうに。
COBOL使え。Sなんてのもあるぞよ。
7テンションアホ:01/11/24 00:08
 COBOLとかSはマトリックス数値解析に使うような言語なのでしょうか?
Lapack並みの計算速度 or C++やJAVA等によるクラスならではの操作性の
どちらも無い気がするのですが? 無知なもので...

 是非COBOLやSでマトリックス数値計算をする利点をご教授下さい.
8名無しさん@1周年:01/11/25 00:46
COBOLで・・・・なんて冗談ですよ。ちなみに>6じゃないけど。
Sならわかる。
でも、その分野ならMATLABそのものじゃないですか。
C++から使いたければ、簡単に関数呼べますよ。
9テンションアホ:01/11/25 00:54
冗談きついです.

> でも、その分野ならMATLABそのものじゃないですか。
> C++から使いたければ、簡単に関数呼べますよ。
MATLABは有料なのが問題なんです. また,移植性の
ことを考えると,C++のソースのみで完結させたいです.
でも,最近のMATLABは内部でBlas,Lapackを使っている
らしくて,異常に計算速いと評判です.

どなたかC++マトリックスクラスユーザはいらっしゃい
ませんでしょうか?
10名無しさん@1周年:01/11/25 00:59
>ことを考えると,C++のソースのみで完結させたいです
MATLABで作った関数をCに落としちゃうんじゃだめ?
11名無しさん@Emacs:01/12/07 01:45
MTL 使ってる俺は厨房か?
12中級エロゲーマー:01/12/07 02:52
俺は行列と言えば、3DCGで使うぐらいだからな…
というわけでDirectXのD3DMATRIX構造体を使っている。
13親切な人:01/12/07 02:56

ヤフーオークションで、幻の人気商品、発見!!!

今は無き「コピーガードキャンセラー」↓
http://page2.auctions.yahoo.co.jp/jp/auction/b18505597

ヤフーオークション内では、現在、このオークション
の話題で、持ちきりです。
14名無しさん@1周年:01/12/07 19:48
>>8
どうやるの?
15名無し:01/12/07 22:23
16名無しさん@1周年:01/12/07 22:32
>>12
javax.vecmathも使えるかな?
 ttp://objectclub.esm.co.jp/vecmath/index-j.html
17名無しさん@1周年:01/12/13 02:57
この板の住人でJava使ってるやつっているの?
18名無しさん@1周年:01/12/13 03:47
MATLABは,Lapackの上にラッパークラスを被せているだけなので,
本質的にLapackを使うのとは変わらないように見えるが,
Matlab上でメモリアロケーションの工夫は,ほとんど出来ないので,
大規模数値計算プログラミングをするならば,MATLABはほとんど使えない.
せいぜい,1000×1000のフルマトリックス位が精一杯てとこだな.
自作しないでやるなら,newmatが一番完成度高いと思う.
lapackのラッパークラスを自作した方が,何かと都合が良いとはおもうけど.
19名無しさん@1周年:01/12/13 22:56
>>18
嘘言っちゃだめ!!
20うふっ!私もおうえんするね♪:01/12/15 05:45
21   :01/12/15 19:00
22名無しさん@1周年:01/12/16 13:44
GSL(GNU Scientific Library)って基本的にCですよね? >>21
マトリックス演算を"A*B"の様には書けないと思うのですが...
もちろん,ラッパーを作れば出来そうですが,あるんでしょうか?
23名無しさん@1周年:01/12/18 11:05
自作
24ななしさん:01/12/20 15:38
>>19
どこが嘘なのでしょうか?
MATLABでは,フルマトリックスと,スパースしか作れないので,
有限要素法のようにバンドマトリックスが必要となる場合には,
スパースからバンドへの変換をしなくてはならず,これは,非常に
大規模な有限要素解析の際には,致命的になります.ここは,反論あります?
あと,MATLABは,Lapackの上にラッパーを被せているというのは,間違えないと
思うのですが.確かに,色々拡張機能はありますが,行列計算に関するルーチンに関しては,
LAPACKの拡張と考えて差し支えないと考えていますが,いかが?
1000×1000のフルマトリックスが関の山と書いたのは,それ以上出来ないと
言ったのではなくて,それ以上の規模になったら,プログラム自作が一番良い
ということが言いたかったわけです.
反論は具体的にお願いします.
2524:01/12/20 21:18
確かに嘘書いていました.
MATLABで,1000*1000行列のLU分解は10秒で済みました.
フルマトリックスの効率が悪くないというのは,大いに納得しましたが,
果たして,数十万*数十万のバンドでは計算できるのかどうか疑問です.
どうなのでしょうか?
26名無しさん@1周年:01/12/22 12:35
プログラム板が妥当かと思った冬の昼下がり
27名無しさん@1周年:01/12/22 16:07
なんでMATLABってあんなに早く計算できるの?
28名無しさん@1周年:01/12/28 00:51
俺もMTL使っている。
厨房だ
29ダークマター:01/12/28 18:47
>>9
遅レスだけど
有料が嫌ならOctaveやScilabを使えばいいじゃん.
30名無しさん@1周年:02/01/01 16:54
win環境で、2*2行列だけ、昔(学生時代)自作したのを拡張して使ってる。
31アピッシャー ◆KEIZ/w.o :02/04/29 03:51

        ( ゚プ) ハイハイハイハイハイ!!
        (つつ
 -=≡( ゚ ゚) > >≡( ゚ ゚)
      ↑ WW   ↑
   マーガレット  フランソワ

           (゚プ) コノスレ・・・・
          ⊂U⊃
        ( ゚ ゚) ∧  (゚ ゚ )
             WW

           ( ゚プ) オモシロイ!
           (つつ
      ( ゚ ゚)   / |  ( ゚ ゚)
            WW

          ⊂(゚プ)つ サイコー!!
              U_
      ( ゚ ゚ )  /  W ( ゚ ゚ )
           W

        (゚プ ) デハマタゴジツ。
        ⊂⊂) )))
    (゚ ゚ ))) < <  (゚ ゚ ) )))
           WW 
32名無しさん@1周年:02/08/20 03:21
/ ̄\
(´υ` )
\д/
33名無しさん@1周年:02/08/20 03:22
/ ̄\
(´υ` )
\ д /
34名無しさん@1周年:02/08/20 03:23
 / ̄\
│´υ` │
 \ д /
35名無しさん@1周年:02/08/20 03:23
 / ̄\
│´υ` │
 \ д /       
36名無しさん@1周年:02/10/21 16:45
マトリックスって何?
誰か分かりやすく教えて!
37名無しさん@1周年:02/10/22 22:54
>>36
赤いカプセルを飲めばわかるよ。
38名無しさん@1周年:02/10/26 09:13
 C++の話題ではないです。参考意見程度に聴いてチョ。

 自分は、マトリクス処理するときは、APLで組んでたけど。。
 もともと言語仕様にマトリクスが含まれてるから、余計な事
(行列演算パッケージのインストール)しなくても使えたし。
 APLで面倒だったのは、コーディングのときかな?特殊な文
字を色々と使うので、そこいらへんを憶えるのが・・・。
39名無しさん@1周年:02/11/19 03:54
俺は自作。
行列の雛形をbasic_matrixテンプレートクラスで作っておいて、
要素の格納形式に応じて、それから派生させたmatrix、skyline_matrixその他。

ネットでいろいろ見たんだけどね。
自分の要求を満たす物はなかったので。
40名無しさん@1周年:02/12/06 21:09
やっぱりvalarrayからつくったほうがいいのかなぁ?
41名無しさん@1周年:02/12/07 14:20
.     l ::::|l .i   ::::::::::;;;',;::;゙、:;;',、:::::;;;;;l ,,、-、'""、;;:;::::;;;',. ヾ;;゙、 ,r<_,.,、、z゙'、、゙;、ヾ;゙、;;;;;;l;;;!;;::::::::::::
      ',::::l ! :.l. . .:::::::::::;;;;',;:;;,゙、;;',゙、::;、rl'"  ,,.゙、',..,゙'、;;;;;;;;゙、   ヾ;、 ,,,;;シ''!"~~゙゙';,ヾx、.゙、;;;!;;l;;;:;::::::::::
       ',:::l ',:;;',.:゙、;;;::::::::;;;;;',;;;;, ヾ;r'、::;;;;!.r'',,、zェュ、. ヾ、;;;;゙、    ヽ''"  l,  ,,、:':'、 ヾ:;、;!;l;;;';;::::::::::
.      ゙、:!. ',:;',、::゙、;;;;:::::;;;;',゙、;;/ヽ.ヾ;;;'ill!'''"゙i ~`   ゙ヾ、゙、.        lr''゙!::li!::;i,  ヾj//;;;;::::::  
       ヾ ゙、:',゙、:゙'、;;;;::::;;;゙、ヾ;、 ヽ;lrヾ、  .,i,       ``       l;;::ゞン;::;j   ツ;/;;;;;;::::;;
        ゙、 ゙、.!:ヽ、ヾ;;;;;;;;;゙;、 ヽ、;ll!. l  ,r';::l,              l;;;. .::: ,;;j  ',;イ:;;;;;;;;::;;;;
           ,'ヽ、;:::l';,、゙、r、;;゙;、. ill!.  ';;:'゙'i,,j;::l,           、,. ゞ--一゙- ,//:;;;;;;;;;;;;;;;
             i ::::;:::!;;;;;;;l゙'',、.゙、ヽll!.  'i;:: ゙''゙:. l、                   ,/'/;;;;;;;;;;;;;;/;;
             ! :::: :::l;;;;;;;;;! l  .゙、. ヾ、.  ゙、;;;;:、‐'''''"                 / /;;;;;;;;;;;;;シツ'
.            |.:::;:: :::l;;;;;;;;;l  、〈゙、   、 '´           ,          ´ ,.';;;;;;、-'" ´
.           l::::; ::i:::l;;;;;;;;;ヽ, ヽ、゙、               ;l           /''" /   藍より青し 公式ホームページ    
            l::::;;:::',::',;;;;;;;;;゙、゙ヽ、. ゙、.             ゙'               ,イ    http://www.aiyoriaoshi.com/index2.html  
          ',:::;;;:::',::',;;;;;;;;;;r'"~゙''ー'、           -‐ '''''"          ,.';;;!     2話 - 夕餉 - 画像
           ゙、:;;;;::;',:゙、'''"      ヽ、            、:::'         /!;;;i!l    http://wqio6xt.hp.infoseek.co.jp/aiao/idx022.html  
42ねろろ:02/12/07 16:37
人間は、地球をほろぼすウイルスだ!!
今いる世界は現実ではないことはないのだ!
43名無しさん@1周年:02/12/11 02:56
44山崎渉:03/01/11 05:25
(^^)
45山崎渉:03/03/13 13:27
(^^)
46名無しさん@3周年:03/04/10 17:46
何のためのC++だ
自分の要求にあった派生クラス作れ
47山崎渉:03/04/17 09:01
(^^)
48山崎渉:03/04/20 04:11
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
49山崎渉:03/05/21 23:54
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―
50山崎渉:03/05/28 14:20
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
51山崎 渉:03/07/12 12:42

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
52山崎 渉:03/07/15 12:43

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
53山崎 渉:03/08/02 02:33
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
     ∧_∧  ∧_∧
ピュ.ー (  ・3・) (  ^^ ) <これからも僕たちを応援して下さいね(^^)。
  =〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
  = ◎――――――◎                      山崎渉&ぼるじょあ
55名無しさん@3周年:03/08/04 20:40
今すぐ会いたいの。ひろみはあなたなしじゃもうだめみたい。
私、ここにいるから・・・・・探しに来て、くれる?
7日間会費フリー、10分間無料になってるの、だから来て。
あなたに会えなくちゃ、寂しくて死んじゃいそうだから
待ってます。来てくださいね!
→→→http://www.gals-cafe.com
56名無しさん@3周年:03/08/13 02:22
57名無しさん@3周年:03/08/13 07:23
58名無しさん@3周年:03/08/13 15:09
堤さやかちゃんの引退記念作です。
これは絶対見るしかないでしょう。
甘えたしゃべりかた、小さな身体に大きなオッパイ、そしてこの顔。
どれをとっても特A級!こんな子がAV女優だったなんて信じられませんね。
無料ムービー観てちょ
http://www.exciteroom.com/
59x:03/08/13 15:23
スレンダーなロリ体形ながらもオマンコ方はしっかり発達しちゃってます。
大きなオチンチンを喉の奥までくわえ込んでのフェラは大人顔負けですぞ。
挿入シーンは少ないながらも小さなオマンコにしっかり挿入されているシーンが勃起モノ!
若い娘はいいですな。

無料ムービーはこちら!
http://www.cappuchinko.com/
60マリーナの夏:03/08/13 15:57
61山崎 渉:03/08/15 17:51
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
62名無しさん@3周年:04/01/02 01:19
    .,. -──-、
   /. : : : : : : : : \
  /┛┗ : : : : : : : : : ヽ  l⌒)OOo     ∩___∩
. {:┓┏ '⌒'  '⌒'i: : :}  {  )  )     | ノ --‐'  、_\
 {:: : : : | ェェ  ェェ |: : :}  | ::::::/    / ,_;:;:;ノ、  ● |
. { : : : :|   ,.   |:: :;!  /  ::::|,,・_   |    ( _●_)  ミ
. ヾ: :: :i r‐-ニ-┐| ::ノ /    )’,∴ ・¨彡、   |∪|  ミ
   ゞイ! ヽ 二゙ノ イゞ  /   / ̄∵ ’  /     ヽノ ̄ヽ
  / _` ー一'´ ̄  /   /     /       /\ 〉
  (___)    /    /    /        /
63mayaqua-penguin-softether-gateway.softether.jp:04/03/10 11:47
test
64ななし:04/03/12 14:25
boostのublas。これ最強。
65名無しさん@3周年:04/03/12 16:48
そうかぁ?
あれにもいろいろ不満が・・・
66名無しさん@3周年:04/04/02 16:11
67名無しさん@3周年:05/01/22 20:09:29
:::::::::::/           ヽ::::::::::::
:::::::::::|  ば  じ  き  i::::::::::::
:::::::::::.ゝ か   つ   み  ノ:::::::::::
:::::::::::/  だ  に  は イ:::::::::::::
:::::  |  な。       ゙i  ::::::
   \_         ,,-'
――--、..,ヽ__  _,,-''
:::::::,-‐、,‐、ヽ. )ノ      _,,...-
:::::_|/ 。|。ヽ|-i、      ∠_:::::::::
/. ` ' ● ' ニ 、     ,-、ヽ|:::::::::
ニ __l___ノ     |・ | |, -、::
/ ̄ _  | i     ゚r ー' >>1 |::
|( ̄`'  )/ / ,..    i     '-
`ー---―' / '(__ )   ヽ 、
====( i)==::::/      ,/ニニニ
:/     ヽ:::i       /;;;;;;;;;;;;;;;;
68名無しさん@5周年:2005/12/21(水) 00:29:57
荒れてるな
69名無しさん@5周年:2005/12/22(木) 13:28:48
blitz++
70名無しさん@5周年:2005/12/28(水) 10:49:42
>>1
Java製だけど

Jakarta Commons Math
http://jakarta.apache.org/commons/math/

というのがある。

まだまだ不完全で改良の余地はあるかな。
早く目的にあったものを作ってほしいなら
自分でもこのオープンソースソフトウェアの開発にコントリビュータ
として参加してみるのもいいと思う。
71名無しさん@5周年:2006/05/02(火) 16:44:09
C++ のmatrixクラスか。使い勝手が良くて効率が良いライブラリはない。

なんせ、演算子のオーバーロードを使うと、関数値としてマトリックス
を返すときに、要素が全部コピーされるという絶望的な状況に陥るし。

それを避けるために、閉包や数式テンプレートのテクニック
使うと、呪文みたいに難しくなる。

あと、演算子*+−の両側のオペランドが作業用の一時マトリックス
かどうかをチェックしながら、グローバルオブジェクトの参照を返す
というテクニックもあるけど、マルチスレッドでは無力。

結局、今のところ決定的なテクニックはない。FORTRANやCみたいに
シコシコ引数を渡すのが一番効率的。
72名無しさん@5周年:2006/05/07(日) 17:50:15
あれてるなぁ.使ってるのはcvmat.
73名無しさん@5周年:2007/06/16(土) 14:56:16
>>9
遅レスだけど
有料が嫌ならOctaveやScilabを使えばいいじゃん.
74名無しさん@5周年:2008/05/12(月) 18:15:00
ublas + OpenTissue
75名無しさん@5周年:2008/06/21(土) 18:15:16
TNT
76ひゃ:2009/06/14(日) 12:00:31
演算子のオーバーロード遅いって言ってるやつへ
遅いがまじめに返すと、演算子のオーバーロードをしたら遅くなるって言ってるやつ多いが、
演算子は普通の関数と処理速度は変わらんから、組み方が悪いだけと言える。
読み取らせたいだけなら、参照渡しで渡せば良いだけだしな

演算子のオーバーロードがどのぐらい利いてくるかちょっと試すためにdouble型の要素を3つ持つ、
ベクトルの足し算が出来るの作ってみるとさ、確かに、普通にコンパイルすると、
多少こっちの方が遅かった。
でも、最適化を有効にしてコンパイルすると全く速度が変わらなかった。

結局アルゴリズムが同じなら、最適化されればどっちも同じ速度らしい。
77名無しさん@5周年:2009/06/20(土) 11:17:24
78名無しさん@5周年:2009/08/06(木) 19:03:45
ttp://www.esnips.com/doc/c30b4188-1e9b-48ea-9c7a-bd902b44fcea/inst_all_new

#include <instMatrix.h>
using namespace inst;
#define MAT(rows,cols) MATRIX<Float,rows,cols>
#define VEC(rows) MATRIX<Float,rows,1>
const VEC(n) X0 = {-1.0f, -1.0f, -1.0f};
const MAT(n,n) W =
{0.2f, 0.0f, 0.0f,
0.0f, 1.2f, 0.0f,
0.0f, 0.0f, 0.2f};
const VEC(n) T = {-0.9f, 0.0f, 0.9f};
VEC(n) NET(Int t) { return W * X(t-1) - T; } // 便利
VEC(n) X(Int t) { if(0==t) return X0; else return Each(satlins, NET(t)); }
79名無しさん@5周年:2009/08/06(木) 20:49:21
PS.俺の名前空間は、INST_DEBUGを予め定義してください
PS2.その名前空間内のリストは、(test用のみだから)iteratorはまだ実装していないから、
本格的なリスト操作なら、stlを使ってください。
80名無しさん@5周年:2009/12/10(木) 13:26:59
>>76

ベクトル演算くらいで偉そうにグダグダ言うな。この馬鹿!
やるならマトリックスの乗算で議論しろや。

あっ、言っておくが、RVOのテクニック使っても、(A+B)*C*(D+E)の
ような(演算子オーバーロードによる)演算では要素コピーはほんの
一部しか避けられん。

じゃ、数式テンプレートと言い出すだろうが、行列のサイズが大きく
なるにつれてコンパイル時間が異常にかかってしまう。サイズ10×10
以上では事実上不可能。
81名無しさん@5周年:2010/04/10(土) 15:35:27
76じゃないが、
>(A+B)*C*(D+E)
速度を気にする場所でこんな書き方するほうがおかしい。
temp1 = D;
temp1 += E;
temp2 = A;
temp2 += B;
temp2 *= C;
temp2 *= temp1;
こうすりゃ一緒じゃねーの?
あと数式テンプレートってなんのこと?
まさか値がコンパイル時にわからないもの同士の計算をコンパイル時に出来ると思ってないよね?
8281:2010/04/15(木) 13:34:18
めっさ勘違いしてた。
たまたま自前のベクトルクラス作ってたんだが、
>(A+B)*C*(D+E)
こう書いた方が速かった。
(環境はVC2008EE、operator +,*は当然インラインメンバ関数)

下手に一時変数を自分で書くよりも、
メモリからのロード順や計算順序を最適化しやすいのかもしれない。
逆アセ見たら、無駄な一時オブジェクトを発生させることもなく
計算用レジスタに直接ぶちこまれて直接計算してた。
というわけで
>RVOのテクニック使っても
>要素コピーはほんの一部しか避けられん
大嘘こいてんじゃねえ。
83名無しさん@5周年:2010/05/07(金) 15:32:30
↑馬鹿

計算結果が正しいかチェックしてみな
84名無しさん@5周年:2010/05/10(月) 20:49:34
馬鹿はお前だ
85名無しさん@5周年
>>81
式テンプレートすら知らんお前がしゃしゃりでてくんな糞野郎