このページは、主に神経科学に関することがらについて、気になることを集めたメモ集です。

ワイルドカード

'dir' などで、特定の条件に当てはまるものだけを表示するために、ワイルドカードを使う場合がある。アスタリスク'*' は、任意の複数の文字を意味するが、任意の一文字だけをワイルドカードを使って表す場合には'?'が使える。

任意の二点間の距離を求める

関数 norm を使えばよい。

たとえば、原点から座標Aへの距離を求めるには、次のようにする。
norm(A)

また、座標Aから座標Bへの距離を求めるには、以下のようにすればよい。
norm(B-A)

これは、任意の次元の空間で同じ。

figureの任意の場所にテキストを表示する

uicontrolを使う。
たとえば、
uicontrol('style', 'text', 'string', 'Test String', 'position', [1, 1, 80, 20], 'HorizontalAlignment', 'left');
とすれば、画面の左下端に左揃えで "Test String" と表示される。

ちなみに、positionの値は左から left, bottom, width, height を指定する。

figure の export で背景が白くならないようにする

figureのプロパティで "InvertHardcopy'を off にする。

ちなみに、コマンドでfigureをexportする場合には、printを用いる。

構造体を配列として扱う

[]で囲むと、ひとつの配列として処理できる。つまり、構造体の要素集合に対して "find" などが使えるということ。

例えば、foo.barという構造体とその要素があったばあいに、[foo.bar]とすれば、[foo(1).bar, foo(2).bar,...]と同じ取り扱いになる。

処理の進行状況を示す

処理の進行状況を示すプログレスバーを表示するには、"waitbar"コマンドを使えばよい。

グラフにエラーバーをつけたいとき

errorbarという関数があるので、それを使う。折れ線グラフであれば、plot関数を使う必要はない。
棒グラフの場合には、bar関数とerrorbar関数を組み合わせて使う。

行列の特定の行あるいは列を削除する

削除したい行あるいは列を空行列と置き換えればよい。
たとえば、行列Aが
 1 2 3
 4 5 6
 7 8 9
だとして、Aの2行目を削除したいのであれば、"A(2,:) = []"とすればよい。

テキストファイルの出力(fprintf)で、改行がうまく出来ない

fprintfで "\n" で改行しても、うまく改行が認識されない場合がある。

その場合、対処法は、以下の2つがある。
  1. fopenする際に、テキストモードで開く
  2. 改行の際、"\r" も加えて "\r\n" とする

参照
http://www.cybernet.co.jp/matlab/support/techkwdb/...

セル配列から当該要素を含むセルの番号を取り出す

セル配列bufに、文字列A、B、Cが複数個ずつランダムな順に格納されているとする。
buf - A, B, C, A, A, B, B, C, A, C, B, ...

ここから、文字列Bがある要素の番号を知りたい場合には、strmatchを使って、次のようにすればよい。
strmatch(文字列B, buf)

こうすれば、文字列Bに一致するセル配列bufの要素の番号が出力される。

※ これを使えば、マーカーファイルから、任意のマーカーのonsetなどの情報が取り出せる。

Figureのタイトルを変更する

set(gcf, 'hoge', 'hoge')を使う。

デフォルトでつけられる"Figure 1"などのネーミングをしない場合は、"set(gcf, 'NumberTitle', 'off')とする。

また指定した文字列を図のタイトルにする場合は、"set(gcf, 'Name', 'hoge')"とする。指定したいタイトルを "hoge"と置き換えればよい。

グラフの軸の値を任意のものに変更する

たとえば時系列データで日付や時間など、グラフの軸の値を任意のものに変更するには、set から XTick (あるいはYTick) および XTickLabel (あるいはYTickLabel) を変更すればよい。

XTick (あるいはYTick) で座標軸上の位置を指定し、XTickLabel (あるいはYTickLabel) でその座標軸上に対応する値(文字列も可能)を指定する 。

図のタイトル(あるいは軸のラベル)で改行する

図のタイトルおよび軸のラベルで改行したい場合は、文字列のセル配列をつかう。

具体的には、"foo" と "bar" の間で改行したい場合には、
title({'foo', 'bar'});

とすればよい。

軸のラベルやタイトルのフォントサイズを変更する

軸ラベルやタイトルのフォントを任意のサイズに変更したい場合は、
xlabel(...., 'FontSize', 12);
のようにすればよい。

軸の目盛のフォントサイズを変更する

x軸あるいはy軸のメモリのフォントサイズを変更する場合は、グラフを描画した直後に、
set(gca, 'Fontsize', 12);
のようにすればよい。

subplotで、行あるいは列をまたぐグラフを描く

subplotを使って、複数のグラフをx行×y列の形で配置することができる。

このとき、1段目には2つの列をまたぐグラフを描き、2段目の各列には、それぞれ異なる2つのグラフを描きたい場合がある。

その場合には、
subplot(2,2,1:2);
というように、指定すればよい。

また、
subplot(2,2,1:3);
とすれば、1列目に、2行に亘るグラフを描くことができる。


参照
Mathworks webサイト subplot タイル状に配置された Axes の作成
タグ

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

管理人/副管理人のみ編集できます