Matlab
今週と来週の学生実習はひたすらMatlabをいじるそうだ。
いろいろ試してみた↓。 それなりの(言語としての)機能はあるが、Rほど変態ではない。
クロージャ生成
Matlabでは動いた。Octave 3.0.5ではエラーが出て動かない。
function [ out0 ] = f(x) function [ out1 ] = g() out1 = x; end out0 = @g; end a = f(0) b = f(1) a() %=> 0 b() %=> 1
高階関数
Octaveでしか試していないが、Matlabでも動くはず。
function mapped_list = map(fn, lis) len = length(lis); mapped_list = 1 : len; for i = 1 : len mapped_list(i) = fn(lis(i)); end end map(@abs, [1 -2 3 -4 5 0]) %ans = % % 1 2 3 4 5 0 %
function res = reduce(fn, lis) len = length(lis); acc = lis(len); for i = (len - 1) : -1 : 1 acc = fn(lis(i), acc); end res = acc; end reduce(@add, [1 2 3 4 5]) %ans = 15