メモ †
- 範囲指定の演算には()が必要 --
- テンソルにすると,max, meanなどが楽.作り方は,forで回してしまったほうが良い. --
目次 †
参考ページ †
疑問 †
cellの中身に直接カッコオペレータ †
structure †
- st([1 3 5]).member_mat(3, 5)
Matlab文法 †
cell配列について †
cell配列への代入 †
function [ret] = cut_real_trials(realdm)
ret = {};
index = 1;
for a = realdm'
c = a{3};
for i = 1:size(c, 2)-1
first = c(i);
last = c(i + 1) - 1;
ret(index, 1:3) = {a{1}(first:last), a{2}, first:last};
end
index = index + 1;
end
end
cell配列のforの参照はcell †
- {[1],[2]}をforで回すと,{[1]}が各要素として代入される.
a = {[1],[2]};
for elem = a
print(elem{1}); % elemではまだcell
end
cell文字列を普通の文字列にする †
s = strjoin(s_cell);
mat, cell配列へのバッチ処理 †
cellfind †
C = {1,5,3,4,2,3,4,5,2,1};
index = find([C{:}] == 5);
cell_array={1,eye(2),true,'foo',10};
string='foo'
logical_cells = cellfun(cellfind('foo'),cell_array)
logical_cells =
[0,0,0,1,0]
arrayfun, cellfun †
d = arrayfun(@(idx) norm(a(idx,:)-m), 1:size(a,1))
cellfun(@findstr, dm1(:, 2), cellstr(repmat('post', size(dm1, 1), 1)), 'UniformOutput', false)
cellfun(@(x, y) findstr(x, y), dm1(:, 2), cellstr(repmat('post', size(dm1, 1), 1)), 'UniformOutput', false)
- @は関数オブジェクトにするくらいの気持ち.ラムダといったほうが近い?
- Uniformなんとかって言われたら,戻り値は一個にしてくれ,という意味.
- 引数も全てcellにしなければならない.
mat, cellのforeachの要素 †
逆PCA †
[coeff, score, c, d, expected, mu] = pca(tac);
% 第i主成分が元のデータでどのようなデータになっているか?
% tac = score * coeff' + repmat(mu, size(score, 1), 1)
% tac(i, :) = score(i, :) * coeff' + mu
% PCAを張ったデータ以外のデータdataの第i主成分は何か?
% s = (tac_now - repmat(mu, size(tac_now, 1), 1)) * inv(coeff');
% s(i, :) = (tac_now(i, :) - mu) * inv(coeff');
PCA Expectedの見方 †
- plot(cumsum(expected), '+');
移動平均 †
r = [0 1 2 3 4];
A=[-1 3];
f=filter(A, 1, r)
f =
0 -1 1 3 5
線形近似(擬似逆行列演算) †
y = X * a + e
a = X \ y
e = y - X * a
% Enter t and y as columnwise vectors
t = [0 0.3 0.8 1.1 1.6 2.3]';
y = [0.6 0.67 1.01 1.35 1.47 1.25]';
% Form the design matrix
X = [ones(size(t)) exp(-t) t.*exp(-t)];
% Calculate model coefficients and residental
a = X\y
r = y-X*a
分割plot †
- plotを分割できる.
- subplot(w, h, index)を宣言してからplot, scatterをすれば分割ができる.
- title, xlabel, ylabelなどはplotのあと.
sprintf †
- c言語のsprintfとの差分は,"が'となっていることのみ.
多次元データの見方 †
分布の見方 †
[nelements,xcenters] = hist(data)
bar(xcenters,nelements)
メモリの節約 †
- きちんと使わなくなった変数はsaveして,必要になったらloadするように.
不必要なfind †
- A(A<0.5) = 0でよい.findはいらない.
Shuffle †
- データのシャッフル
- Period Shuffle Surrogate,実験順序生成のために.
data = data_num(randperm(length(data_num)));
Color Bar †
imagescのcolorbarを変えたい時に使う.
colormap(-sortrows(-gray))
Matlab環境 †
初期設定について †
- matlab/project1を作る.
- project1/load_env.mにpathの設定などを入れる
- project1/load_project1.mにデータのload関数を入れる.
ワークスペースの保存と再開 †
- 作業の終わりにはsave('yyyymmdd.mat','-v7.3');
- 作業の始めにload('yyyymmdd.mat, '-v7.3');
マルチプロセスによる並列化 †
screen
matlab -nodisplay
[command]
[ctr-ad] # detach
screen -ls
screen -r
vim配列のmatlab †
- 無理らしい
- いちおう,CUIで起動中に!vi hoge.mとして,matlab内でviを立ち上げることでできなくない.
matlabのオプション †
Exit Blocker †
非保存のファイルを1つ残すべき