Miyazawa’s Pukiwiki
MATLAB Tips
はすでに存在します。
開始行:
&pgid(,MATLAB Note);
*MATLAB Note / MATLAB Tips [#ud04378b]
#contents
**オンデマンドセミナー「機械学習: データの自動分類とパタ...
-http://www.mathworks.co.jp/webex/recordings/JP_20110823_...
-Neural Network ToolboxのGUIツール
--トレーニングデータ:学習に使うデータ、デフォルトではデ...
--バリデーションデータ:過適応を防ぐため、学習途中のモデ...
--テストデータ:上記プロセスに一切使わない、最終的なモデ...
--学習結果は混同行列の形で視覚化できる。各データの正解デ...
-ランダム要素統制
--関数の最初に以下のコードを入れておけば同じ乱数が生成さ...
seed = 0;
rng(seed);
--※ニューラルネット、決定木は乱数に依存する
-バギングされた決定木
--2300特徴量、4クラス、データ数60で正確高速な分類
--ランダムに選んだデータを使って複数の決定木を作り、多数...
--DeltaCritDecisionSplit で特徴量ごとの寄与度を表示できる...
--信頼性の値も得られる
-Statistics Toolbox で可能な機械学習の手法の例
--Linear and Quadratic Discriminant Analysis
--決定木
--ナイーブベイズ
--特徴量選択アルゴリズム(Sequential Forward and Backward...
--モデル選択(クロスバリデーション、混合行列、ROCパフォー...
-Bioinformatics Toolbox で可能な機械学習の手法の例
--SVM
--K-近傍法
--Feature ranking, randomized feature selection
**コマンド [#g3f1131e]
***基本 [#o0604f9e]
-MATLABの関数やコマンドは、すべて
>> edit コマンド(関数)名
とすることで中身を確認できます。
-各コマンドのヘルプ:MATLABウインドウ上で、
>> help コマンド名
***プログラミング全般 [#z7a66518]
-EXIST 変数や関数が定義されているかどうかのチェック
-NARGIN [[引数の数を得る:ftp://ftp.eng.auburn.edu/pub/bh...
***文字列操作 [#l2891eb1]
-STRCAT 文字列を連結する
***文字列マッチング [#he4116f4]
-STRFIND 一方の文字列内にある文字列の検出
-STRMATCH 適合する文字列の検出
***ベクトル操作 [#ed75cfc7]
-ROT90 行と列を入れ替え
-FIX(X) Xの要素をゼロ方向の最も近い整数に丸める(小数点...
***重複なしで配列をソート [#uefbda75]
-関数 unique を使う。
***引数の数を得る [#t0b0c3f8]
-例外処理などのために、関数に与えられた引数の数を得るには...
***NaNを検出する [#y08cf77d]
-[[NaNを取り除く(Nobuhito Mori):http://www.oceanwave.jp/i...
***2つのベクトルの共通部分を得る(積集合) [#d2bfbbfa]
-[[intersect 関数:http://www.mathworks.co.jp/jp/help/matl...
**セル配列 [#a13075f6]
***セル配列を数値型に変換 [#h347466a]
-[[参考 データタイプ:http://dl.cybernet.co.jp/matlab/supp...
-セル配列に、文字列型の数字データが入っているときは、配列...
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'); %セル配列とし...
dataLine = [];
for count = 1:1:length(inputLine) %各行を読み込む
dataLine = [dataLine ; str2num(inputLine{count, :})];
end
dataLine
***セル配列の宣言、参照、削除 [#v8257d0e]
-宣言は
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'
***文字列として扱う [#afa6799d]
A = cell(3,1);
A{1} = 'a'
A{2} = 'aa'
A{3} = 'aaa'
A(1) = strcat(A(1),'b');
A
A =
'ab'
'aa'
'aaa'
***各セルに次数の異なる数値データを代入する [#j8fb64aa]
>> 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]
***セル配列内の条件抽出 [#t2ea7613]
-find関数は使えないので、[[strcmp関数:http://www.mathwork...
***セル配列が空行列(Empty cell array)かどうか [#rfc419c2]
-[[isempty関数:http://www.mathworks.com/help/ja_JP/techdo...
**文字列処理 [#g84d8ad3]
***文字列を分割するには [#l7b24e66]
-[[split.m:http://shower.human.waseda.ac.jp/~m-kouki/matl...
***引用符を文字列として指定するには [#je1ab029]
-文字列式で引用符記号「'」を使用するには、シングルクォー...
-例
>> input = 'test dayo.'; %変数inputに文字列...
>> output = strcat('''',input,'''') %変数outputに「'」+...
これでoutputの中身は、「'test dayo.'」となります。
-[[その他のエスケープ文字を表示するには:http://shakosv.sk...
**呼び出し [#r07f4695]
***コマンドラインからMATLABを呼び出す [#we8fe515]
-Mファイルをコマンドラインから実行するには
--testmatlab.m
A = [1 2 3 ;
4 5 6 ;
7 8 9];
newA = calcA( A );
csvwrite('testmatlab.csv', newA);
disp(A);
--calcA.m
function [ newA ] = calcA( A )
newA = A * 10;
-上記を同じディレクトリにおいて、
/etc/matlabR2007b/bin/matlab -nodisplay < testmatlab.m
--testmatlab.csv ができる。
--testmatlab.m は function 表記ができない (Error: Functi...
***JavaからMATLABを呼び出す [#ze059395]
-引用元:[[HOWTO Call Matlab from Java:http://shatteredni...
-'''[[CallingMatlab.java:http://shower.human.waseda.ac.jp...
--通常の出力とエラーメッセージを別のストリームで取得して...
--エラーサンプル:'''[[testmatlabE.m:http://shower.human....
--実行例
$ java CallingMatlab testmatlabE.m
0
1 < M A T L A B >
2 Copyright 1984-2007 The MathW...
3 Version 7.5.0.338 (R20...
4 August 9, 2007
5
6
7 To get started, type one of these: helpwin, h...
8 For product information, visit www.mathworks....
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プログラムを使うには [#q73b1a94]
-[[参考 MATLABからのJavaの利用:http://dl.cybernet.co.jp/m...
+使いたいJavaプログラムのclassファイルを作成して、ひとつ...
+ (MATLABのインストールフォルダ)\toolbox\local\classpath....
+MATLABを再起動します。
+MATLABのコマンドラインで、
>> javaMethod(メソッド名,クラス名,引数1,引数2,...)
とすることで実行できます。詳しくはMATLABのヘルプ(>> help...
***MATLABからCプログラムを使うには [#yb816f82]
-[[参考 MATLABからの C および Fortran プログラムの呼び出...
-[[MEX-ファイル チュートリアル:http://www.cybernet.co.jp/...
**入出力 [#f9b1ac73]
-[[mファイル実行中にキーボード入力を受け付ける :http://dl...
**例外処理 [#k612fab3]
-[[参考:http://dl.cybernet.co.jp/matlab/support/manual/r1...
**時間処理に関して [#p4cbddf5]
***タイマー [#z483a435]
-[[あるコードからあるコードまでの実行時間を計る(ストップ...
-[[キーボードからの反応時間測定:http://www.dips-kwansei.g...
-WAV ファイルの再生時間を知るには
--音を取り込んだ変数のベクトル数をサンプリング周波数で割...
filename = '001.wav';
[data,Fs,Bits] = wavread(filename);
totaltime = (length(data) - 1) / Fs %Fsからファイル...
--注意 length(data) は、(Fs * ファイルの秒数) + 1 になる...
***Psychophysics Toolbox の時間同期に関して [#l83f363b]
-時間の同期はWindowsよりもMacの方がうまくいくらしい。
--[[松井様からいただいたメール(限定公開):http://shower....
**コマンドラインの命令文を文字列としてプログラム内で実行...
-[[eval関数:http://www.mathworks.co.jp/help/ja_JP/techdoc...
-(決まった文字列)(数字).mat のようなファイルを 1~200 ま...
終了行:
&pgid(,MATLAB Note);
*MATLAB Note / MATLAB Tips [#ud04378b]
#contents
**オンデマンドセミナー「機械学習: データの自動分類とパタ...
-http://www.mathworks.co.jp/webex/recordings/JP_20110823_...
-Neural Network ToolboxのGUIツール
--トレーニングデータ:学習に使うデータ、デフォルトではデ...
--バリデーションデータ:過適応を防ぐため、学習途中のモデ...
--テストデータ:上記プロセスに一切使わない、最終的なモデ...
--学習結果は混同行列の形で視覚化できる。各データの正解デ...
-ランダム要素統制
--関数の最初に以下のコードを入れておけば同じ乱数が生成さ...
seed = 0;
rng(seed);
--※ニューラルネット、決定木は乱数に依存する
-バギングされた決定木
--2300特徴量、4クラス、データ数60で正確高速な分類
--ランダムに選んだデータを使って複数の決定木を作り、多数...
--DeltaCritDecisionSplit で特徴量ごとの寄与度を表示できる...
--信頼性の値も得られる
-Statistics Toolbox で可能な機械学習の手法の例
--Linear and Quadratic Discriminant Analysis
--決定木
--ナイーブベイズ
--特徴量選択アルゴリズム(Sequential Forward and Backward...
--モデル選択(クロスバリデーション、混合行列、ROCパフォー...
-Bioinformatics Toolbox で可能な機械学習の手法の例
--SVM
--K-近傍法
--Feature ranking, randomized feature selection
**コマンド [#g3f1131e]
***基本 [#o0604f9e]
-MATLABの関数やコマンドは、すべて
>> edit コマンド(関数)名
とすることで中身を確認できます。
-各コマンドのヘルプ:MATLABウインドウ上で、
>> help コマンド名
***プログラミング全般 [#z7a66518]
-EXIST 変数や関数が定義されているかどうかのチェック
-NARGIN [[引数の数を得る:ftp://ftp.eng.auburn.edu/pub/bh...
***文字列操作 [#l2891eb1]
-STRCAT 文字列を連結する
***文字列マッチング [#he4116f4]
-STRFIND 一方の文字列内にある文字列の検出
-STRMATCH 適合する文字列の検出
***ベクトル操作 [#ed75cfc7]
-ROT90 行と列を入れ替え
-FIX(X) Xの要素をゼロ方向の最も近い整数に丸める(小数点...
***重複なしで配列をソート [#uefbda75]
-関数 unique を使う。
***引数の数を得る [#t0b0c3f8]
-例外処理などのために、関数に与えられた引数の数を得るには...
***NaNを検出する [#y08cf77d]
-[[NaNを取り除く(Nobuhito Mori):http://www.oceanwave.jp/i...
***2つのベクトルの共通部分を得る(積集合) [#d2bfbbfa]
-[[intersect 関数:http://www.mathworks.co.jp/jp/help/matl...
**セル配列 [#a13075f6]
***セル配列を数値型に変換 [#h347466a]
-[[参考 データタイプ:http://dl.cybernet.co.jp/matlab/supp...
-セル配列に、文字列型の数字データが入っているときは、配列...
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'); %セル配列とし...
dataLine = [];
for count = 1:1:length(inputLine) %各行を読み込む
dataLine = [dataLine ; str2num(inputLine{count, :})];
end
dataLine
***セル配列の宣言、参照、削除 [#v8257d0e]
-宣言は
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'
***文字列として扱う [#afa6799d]
A = cell(3,1);
A{1} = 'a'
A{2} = 'aa'
A{3} = 'aaa'
A(1) = strcat(A(1),'b');
A
A =
'ab'
'aa'
'aaa'
***各セルに次数の異なる数値データを代入する [#j8fb64aa]
>> 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]
***セル配列内の条件抽出 [#t2ea7613]
-find関数は使えないので、[[strcmp関数:http://www.mathwork...
***セル配列が空行列(Empty cell array)かどうか [#rfc419c2]
-[[isempty関数:http://www.mathworks.com/help/ja_JP/techdo...
**文字列処理 [#g84d8ad3]
***文字列を分割するには [#l7b24e66]
-[[split.m:http://shower.human.waseda.ac.jp/~m-kouki/matl...
***引用符を文字列として指定するには [#je1ab029]
-文字列式で引用符記号「'」を使用するには、シングルクォー...
-例
>> input = 'test dayo.'; %変数inputに文字列...
>> output = strcat('''',input,'''') %変数outputに「'」+...
これでoutputの中身は、「'test dayo.'」となります。
-[[その他のエスケープ文字を表示するには:http://shakosv.sk...
**呼び出し [#r07f4695]
***コマンドラインからMATLABを呼び出す [#we8fe515]
-Mファイルをコマンドラインから実行するには
--testmatlab.m
A = [1 2 3 ;
4 5 6 ;
7 8 9];
newA = calcA( A );
csvwrite('testmatlab.csv', newA);
disp(A);
--calcA.m
function [ newA ] = calcA( A )
newA = A * 10;
-上記を同じディレクトリにおいて、
/etc/matlabR2007b/bin/matlab -nodisplay < testmatlab.m
--testmatlab.csv ができる。
--testmatlab.m は function 表記ができない (Error: Functi...
***JavaからMATLABを呼び出す [#ze059395]
-引用元:[[HOWTO Call Matlab from Java:http://shatteredni...
-'''[[CallingMatlab.java:http://shower.human.waseda.ac.jp...
--通常の出力とエラーメッセージを別のストリームで取得して...
--エラーサンプル:'''[[testmatlabE.m:http://shower.human....
--実行例
$ java CallingMatlab testmatlabE.m
0
1 < M A T L A B >
2 Copyright 1984-2007 The MathW...
3 Version 7.5.0.338 (R20...
4 August 9, 2007
5
6
7 To get started, type one of these: helpwin, h...
8 For product information, visit www.mathworks....
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プログラムを使うには [#q73b1a94]
-[[参考 MATLABからのJavaの利用:http://dl.cybernet.co.jp/m...
+使いたいJavaプログラムのclassファイルを作成して、ひとつ...
+ (MATLABのインストールフォルダ)\toolbox\local\classpath....
+MATLABを再起動します。
+MATLABのコマンドラインで、
>> javaMethod(メソッド名,クラス名,引数1,引数2,...)
とすることで実行できます。詳しくはMATLABのヘルプ(>> help...
***MATLABからCプログラムを使うには [#yb816f82]
-[[参考 MATLABからの C および Fortran プログラムの呼び出...
-[[MEX-ファイル チュートリアル:http://www.cybernet.co.jp/...
**入出力 [#f9b1ac73]
-[[mファイル実行中にキーボード入力を受け付ける :http://dl...
**例外処理 [#k612fab3]
-[[参考:http://dl.cybernet.co.jp/matlab/support/manual/r1...
**時間処理に関して [#p4cbddf5]
***タイマー [#z483a435]
-[[あるコードからあるコードまでの実行時間を計る(ストップ...
-[[キーボードからの反応時間測定:http://www.dips-kwansei.g...
-WAV ファイルの再生時間を知るには
--音を取り込んだ変数のベクトル数をサンプリング周波数で割...
filename = '001.wav';
[data,Fs,Bits] = wavread(filename);
totaltime = (length(data) - 1) / Fs %Fsからファイル...
--注意 length(data) は、(Fs * ファイルの秒数) + 1 になる...
***Psychophysics Toolbox の時間同期に関して [#l83f363b]
-時間の同期はWindowsよりもMacの方がうまくいくらしい。
--[[松井様からいただいたメール(限定公開):http://shower....
**コマンドラインの命令文を文字列としてプログラム内で実行...
-[[eval関数:http://www.mathworks.co.jp/help/ja_JP/techdoc...
-(決まった文字列)(数字).mat のようなファイルを 1~200 ま...
ページ名:
既存のページ名で編集する