MATLAB

MATLABのparforの使い方メモ(高速化のために)

MATLABのparfor構文を使うと、parfor内の処理を並列で行ってくれるため簡単に高速化ができます。たとえば多くのパラメータに対するシミュレーション結果を得たいとき、parforを使うと各パラメータに関する計算を簡単に並列化することができます。しかし、par…

MATLABで自動的にfigureを重ならないように並べる

MATLABで、figureが互いに重ならないように並べるgridfigureというコマンドを作りました。 gridfigure - File Exchange - MATLAB CentralMATLABのfigureには'defaultfigurecreatefcn'という隠されたプロパティがあり、これを変えることでfigureウインドウ作…

MATLAB BF Interpreter

bfi.m function ret = bfi(prog) m = zeros(1,1024); mp = 1; stdout = []; prog = regexprep(prog, '[^><\+-\[\]\.,]', ''); prog = strrep(prog, '+', 'm(mp) = m(mp) + 1;'); prog = strrep(prog, '-', 'm(mp) = m(mp) - 1;'); prog = strrep(prog, '>', …

MATLAB Quine

Quineとは、「自分自身のコードを出力するプログラム」です。 これの難しさは、例えば printf("hello world!");という文字列を出力するためには、 printf("printf(\"hello world!\");");のようなものを書けば良いのですが、こうすると作ったコードが元のコー…

MATLABの無名関数内で条件分岐・複数行実行を行う方法

これらは、以前Obfuscated MATLAB Codeを書いた時に使ったテクニックなのですが、通常のMATLABプログラミングでも使えそうだと思ったので紹介します。 Yet Another Obfuscated MATLAB Code - woodrush’s diaryこれらのテクニックの根底にあるのが、fevalとい…

Yet Another Obfuscated MATLAB Code

なんと、以下のコードはちゃんとした、実行できるMATLABコードになっています。growth.m figure(1) clf,hold on,grid on,view(58,38),feval(@(mm,x)mm(@(O)mm(@(Y,U,V,W,v,nN,NN,Mm,mM,md,Nn)... mm(@(G)mm(Y(G),x,0,0,v(mM(x))),mm(@(L)(@(M)(@(n,p,q,r)mm(…