R/MATLAB

行列の行/列の定数倍の処理と速度

ノルムの正規化などをする際に,行列Xの行や列単位で定数倍したい時がありますが,MATLABでどう書くのが一番早いかを測定したので,メモ. 実験コード N = 3000; D = 1000; A = rand(D,N); B = (1:N); %% 実装1 for i = 1:100 x = bsxfun(@times, A, B); end…

M系列符号の生成

トランジスタ技術(2012/8)のKinect特集でM系列符号が使われていて、面白そうなので、MATLABで実装してみた。 コード %% M系列符号 clear; N = 3; M = 5; R = randi([0 1], M,1); nP = 2^M-1; B = zeros(nP*30, 1); % 生成 for iP = 1:nP*30 R = [xor(R(N),R(…

Woodbury行列反転公式を使って、逆行列演算を高速化。

回帰の問題などでは(X'X)^-1をよく使う。 Xが横長であるときX'Xが非常に大きな行列になるので、 逆行列を求めるのが大変で高速化が重要になる。そこで、Woodbury行列反転公式(Woodbury matrix inversion formula) (A+BCD)^-1 = A^-1 - A^-1 B(C^-1+DA^-1 B)^…

MACでのmexの設定の注意点

MACのMATLABで mex -O hogehoge.cpp とやると, error: stdio.h: No such file or directoryが出力され,対処に思いの外,時間がかかったので,メモ. 対処法 /Applications/MATLAB_R2011a_Student.app/bin/gccopts.shの CC='gcc-4.2' SDKROOT='/Developer/S…

JETの画像とカラー画像を重ねて描画

MATLABでJETの画像とカラー画像を重ねた画像をよく見るのだが, どう作ればいいのか分からなかったので,調べたついでにメモ. % 準備 clear; close all; img = im2double(imread('gundam.jpg')); img = imresize(img, 0.1); gimg = rgb2gray(img); h = fspe…

eigの速度

MATLABでeigの速度がどの程度なのか少し気になっていたので, 適当に時間を計測してみた. % eigの時間測定 clear all; nLoop = 10; sizeM = 2.^(5:12); nSizeM = numel(sizeM); times = zeros(nSizeM, nLoop); for iSizeM = 1:nSizeM disp(sizeM(iSizeM)); …

転置と共役転置

MATLABの転置には普通,「’」を使っていたのだけれども, 「.'」との違いが分からなかったので,調べたついでにメモ.「’」は共役転置 「.'」は転置.次の例を見てもらえれば,分かると思う. >> x=[1+j; 1-j] x = 1.0000 + 1.0000i 1.0000 - 1.0000i >> x' …

MATLABでFizzBuzzを書いてみた

TwitterでFizzBuzzが少し話題にあがっていたので, MATLABで書いてみました. 何も考えず書いてみた とりあえず,普通に書くとこんな感じ. for i = 1:15 if mod(i,15) == 0 fprintf('FizzBuzz,'); elseif mod(i,3) == 0 fprintf('Fizz,'); elseif mod(i,5) …

自己組織化マップのコードを書いてみた

自己組織化マップを簡単に勉強してみたので, ついでにMATLABでプログラムを書いてみた.アルゴリズムはwikipediaとかを参考に書いてみた.RGBのデータを適当に用意して,そのデータに対してSOMを試してみた.以下,ソースと実行結果. ソース % setting sam…

runを使うときの注意

runを使っていて少しはまったので、例のごとく備忘録。hogehoge.mっていうファイルをrunで実行するとき、 str ='hogehoge'; run(str); こんな感じでいつも書いているんだけど、 hogehogeっていう変数とか関数が事前にあるとそっちが優先されるらしく、 hogeh…

THE ELEMENTS OF MATLAB STYLEを読んでみた。

The Elements of MATLAB Style作者: Richard K. Johnson出版社/メーカー: Cambridge University Press発売日: 2010/12/31メディア: ペーパーバック クリック: 5回この商品を含むブログ (1件) を見る よくあるスペースはこういう感じに入れましょう。 変数名…

matlab 2010a student version 買ってみた.

matlabが欲しくなったので, 買ってみました.matlabのstudent versionを買う場合, ・生協でかう. ・mathwarks社から買う. ・amazon.co.jpで買う. の3つの方法があったのですが,うちの大学には生協がないのと,20000万円ぐらいするので1番目は却…

距離行列をk近傍だけ残す

それぞれのデータに対して,距離行列Dにおいて, K近傍だけ残すDを作る. [tmp, ind] = sort(D); for i=1:N D(i,ind((2+K):end,i)) = INF; end D = min(D,D');

HLACとフィッシャーの線形判別を用いてじゃんけんの手を判別してみた(2)

前回の続き。 フィッシャーの線形判別を用いて3次元にplotしてみました。射影後の次元はc-1=9-1=8次元なのですが、 固有値の大きい3つを選んで出力してみました。うーんきれいに分かれています。 これだけきれいに分かれていれば、 「各クラスの平均ベクト…

ユーザの入力を待つ

For文とかでデバッグする際にループを1回ずつ止めながら 出力を見たい時がある。その時は par(ask=TRUE) を使うと便利。 ユーザが何か入力するまで処理が止まってくれる。

HLACとフィッシャーの線形判別を用いてじゃんけんの手を判別してみた

じゃんけんの手(ぐー、ちょき、パー)をHLAC(25次元)で特徴抽出、 フィッシャーの線形判別で3-1=2次元の部分空間に射影。 その結果は以下の通り。 データ数はそれぞれの手が300枚。 赤:ぐー、緑:ちょき、青:パー「平均ベクトルとのユークリッド距離が最短…

画像読み込み

rimageというパッケージをダウンロードしてくる。rimageの動作例 library(rimage) data(logo) op <- par(mfrow=c(2,2)) plot(logo, main="Original") plot(thresholding(logo, mode="fixed"), main="threshold=0.5") plot(thresholding(logo, mode="fixed", …