mots quotidiens. | |
Daichi Mochihashi (持橋大地) daichi <at> ism.ac.jp | by hns, version 2.10-pl1. |
|
|||||||||||||||||||||||||||||||||||||||||||||||||
とりあえず, 「ボレロ」 という作品が はばタン とか 自民党ロゴ に似ていると思ったわけですが(w, 実際はベジャールの「ボレロ」がテーマという のは後で知りました。群舞の所は確かにこういう感じですが, ボレロの中心は 手を下にして上に上げる踊り(つまり象徴的には, 死からの光の再生, というような こと)なので, これだけでは表現できないような..。
以前, 長崎の浦上天主堂に行った時に, 礼拝堂の前の案内板にこの美術館の展覧会
ポスターがあって, 長崎まで来て自宅から歩いて2分の美術館の案内を見るとは..w
と思ったことがありましたが, なかなかいい美術館でした。
再開館した時期が, ちょうどけいはんな線開業の時期と重なっていて, 偶然かな?
という気もします。
ぐはっ。証明が..。
12345 101:1 103:2 107:3 109:4 113:5 127:6は一般的に, (12345,101) -> 1, (12345,103) -> 2, .., (12345,127) -> 6, .. のような疎行列として表せる。
1 m = sparse(n,l); 2 while ~feof(fid) 3 l = fgetl(fid); 4 d = sscanf(l,'%d',1); 5 i = strpbrk(l,' '); % space or tab 6 f = sscanf(l(i+1:end),'%d:%g',Inf); 7 n = length(f) / 2; 8 for j = 1:n 9 m(d,f(2*j-1)) = f(2*j); 10 end 11 end
これは小さなデータについては何の問題もなく動くのだが,
ファイルが大きくなるとかなり遅くなる。
そんなもんか, と思ってあきらめていたのだが, プロファイルを取ってみたところ
(profile on), 上の9行目でほとんどの時間が食われていることがわかった。
ハッと気が付いたのだが, MATLABの疎行列を表示してみると,
内部的にはrow-wiseではなく column-wise に格納されているように見える。
ということは,
m(f(2*j-1),d) = f(2*j);とすると速くなるのでは.. と思って実験してみると, とてつもなく速くなった。;
>> tic, m = fmatrix('bncm.uni.dat');, toc loading lines 4120/4120.. elapsed_time = 926.6075 (seconds) >> tic, m2 = fmatrix2('bncm.uni.dat');, toc loading lines 4120/4120.. elapsed_time = 14.2434 (seconds)何と65倍。 (必要なら, 最後で m = m' とすればよい。)
タイトル一覧 |