MATLAB Note
MATLAB Note / MATLAB Tips †
コマンド †
基本 †
- MATLABの関数やコマンドは、すべて
>> edit コマンド(関数)名
とすることで中身を確認できます。
- 各コマンドのヘルプ:MATLABウインドウ上で、
>> help コマンド名
プログラミング全般 †
- EXIST 変数や関数が定義されているかどうかのチェック
- NARGIN 引数の数を得る
文字列操作 †
文字列マッチング †
- STRFIND 一方の文字列内にある文字列の検出
- STRMATCH 適合する文字列の検出
ベクトル操作 †
- ROT90 行と列を入れ替え
- FIX(X) Xの要素をゼロ方向の最も近い整数に丸める(小数点以下切り捨て)
重複なしで配列をソート †
引数の数を得る †
- 例外処理などのために、関数に与えられた引数の数を得るには、nargin を使います。
NaNを検出する †
2つのベクトルの共通部分を得る(積集合) †
セル配列 †
セル配列を数値型に変換 †
- 参考 データタイプ
- セル配列に、文字列型の数字データが入っているときは、配列に変換しようとしても、エラーが出ます。
C = {'0';'1.2'}
cell2mat(C)
??? エラー: ==> cat
CAT引数の次元が一致していません
- ファイル読み込みの時などによく起こるエラーです。
- 解決するには、
C = {str2num('0');str2num('1.2')} %数値型でセル配列に格納
cell2mat(C)
ans =
0
1.2000
- ファイル読み込みは以下のようにすればOK(ファイル中に、数字データしかない場合)
inputLine = textread( 'test.txt', '%s'); %セル配列としてinputLineに格納
dataLine = [];
for count = 1:1:length(inputLine) %各行を読み込む
dataLine = [dataLine ; str2num(inputLine{count, :})];
end
dataLine
セル配列の宣言、参照、削除 †
- 宣言は
A = cell(3,1);
A{1} = 'a'
A{2} = 'aa'
A{3} = 'aaa'
- 参照は
>> A(2)
ans =
'aaa'
>> A{2}
ans =
aaa
- 2番目のセルを削除したいとき
>>A(2) = []
A =
'a'
'aaa'
文字列として取り出す †
A = cell(3,1);
A{1} = 'a'
A{2} = 'aa'
A{3} = 'aaa'
A(1) = strcat(A(1),'b');
A
A =
'ab'
'aa'
'aaa'
各セルに次数の異なる数値データを代入する †
>> A = cell(2,1)
A =
[]
[]
>> A{1} = [1 2]
A =
[1x2 double]
[]
>> A{2} = [1 2 4]
A =
[1x2 double]
[1x3 double]
>> A{2}
ans =
1 2 4
>> A(2)
ans =
[1x3 double]
セル配列内の条件抽出 †
セル配列が空行列(Empty cell array)かどうか †
文字列処理 †
文字列を分割するには †
引用符を文字列として指定するには †
呼び出し †
コマンドラインからMATLABを呼び出す †
JavaからMATLABを呼び出す †
- 引用元:HOWTO Call Matlab from Java
- CallingMatlab.java
- 通常の出力とエラーメッセージを別のストリームで取得しています。
- エラーサンプル:testmatlabE.m
- 実行例
$ java CallingMatlab testmatlabE.m
0
1 < M A T L A B >
2 Copyright 1984-2007 The MathWorks, Inc.
3 Version 7.5.0.338 (R2007b)
4 August 9, 2007
5
6
7 To get started, type one of these: helpwin, helpdesk, or demo.
8 For product information, visit www.mathworks.com.
9
10 >> >> >> >> 1 2 3
11 4 5 6
12 7 8 9
13
14 >>
ERROR ??? Error using ==> plus
ERROR Matrix dimensions must agree.
ERROR
ERROR ??? Undefined function or variable 'newA'.
ERROR
ERROR
MATLABからJavaプログラムを使うには †
- 使いたいJavaプログラムのclassファイルを作成して、ひとつのフォルダにまとめておきます。
- (MATLABのインストールフォルダ)\toolbox\local\classpath.txt の最後の行に、上記のclassファイル用フォルダのパスを追記します。(もしくは、MATLABのウインドウ上でclassファイルフォルダを右クリック→「パスに追加」)
- MATLABを再起動します。
- MATLABのコマンドラインで、
>> javaMethod(メソッド名,クラス名,引数1,引数2,...)
とすることで実行できます。詳しくはMATLABのヘルプ(>> help javaMethodと入力)を参照してください。
MATLABからCプログラムを使うには †
入出力 †
例外処理 †
時間処理に関して †
タイマー †
Psychophysics Toolbox の時間同期に関して †
- 時間の同期はWindowsよりもMacの方がうまくいくらしい。
コマンドラインの命令文を文字列としてプログラム内で実行するには †
- eval関数を使います。
- (決まった文字列)(数字).mat のようなファイルを 1~200 まで順番に load で読み込む、といったときに有効。