FC2ブログ

初心者によるMATLABメモ

3次元形状やってんのになぜかMATLABを使わされることになった人のメモ。

 

検索エンジンから来た方は読みたい記事が表示されていない可能性があります。
その場合、左メニューのフォームでブログ内を検索すると見たい記事を見れると思います。
もしくは、カテゴリー名をクリックしていただくと各カテゴリーの記事のリストが見れます。

[Optimization Toolbox] Optimization Toolboxのドキュメント

Optimization Toolboxのカテゴリが空だったのでとりあえずpdfドキュメントへのリンクを貼っておきます。

MATLAB:マニュアル:ドキュメンテーションセット:Optimization Toolbox:サイバネットシステム

一応WEBのドキュメントもありますが個人的にはキーワードで検索しづらいのがなぁ…と。
pdfの方がCtrl + FとかCtrl + Sで検索できて便利だと個人的には思うので。
あと印刷できるし。

それとこの辺り↓も参考になると思います。特に初心者には。
MATLAB:資料ライブラリ検索詳細:MATLABで行う最小化の基礎 - fminbnd関数とfminsearch関数 -:サイバネットシステム

で、まぁ結局読んでも上手くいかないと思うので,というか上手くいかなかったのであとは個々英語でなんとか打開してください…
The MathWorks - Support by Product - Optimization Toolbox

特にMATLAB CentralFile Exchangeに結構役立つものがあったりします。
The MathWorks - Support by Product - Optimization Toolbox - File Exchange
スポンサーサイト



このエントリに付けられたタグ|MATLABOptimizationToolboxドキュメント

[基本] パスの追加と削除

パスの追加と削除は一応Windowsならメニューバーの『ファイル→パス設定』からダイアログボックスを使って行うことが出来ますが,イマイチGUIなんて使うのは面倒だし,例えば同名他機能の関数を同じスクリプト中で使用したい場合などはスクリプト中でパスを追加したり,削除したりなんてことをしたいことも多い。(僕だけ?)
で,出てくるコマンドがこれ。
追加 = addpath('追加したいディレクトリ')
削除 = rmpath('削除したいディレクトリ')
一応コマンドで入力するときとかはクォーテーションで囲まないで「addpath (削除したいディレクトリ)」とか[rmpath (追加したいディレクトリ)]でできます。

蛇足ですが,こんなのでも一応追加と削除は可能です。
追加 = path(path,'追加したいディレクトリ')
削除 = path(path=='削除したいディレクトリ')=[]

ダイアログにある「サブフォルダも追加」についてはこちらのエントリを参照してください。


path (MATLAB Function Reference)
addpath (MATLAB Function Reference)
rmpath (MATLAB Function Reference)
このエントリに付けられたタグ|MATLABサーチパス

[基本] 最後のインデックス(endの違った使い方)

凄い初歩的なことに今日気づきました。
今まで最後のインデックスを指定するときにA(length(A))とかいつもしてたんですが…
endには「for,while,switch,try,ifステートメントの終了」以外に「最後のインデックス」という意味があったのか…
実際にここを見ても,確かに…
今更わざわざendのヘルプとか見てなかったから知らなかった。

これは特に2次元配列になってくるとかなり有効で,
A = rand(100,100);
A(length(A(1,:)),length(A(:,1)-1))と同じことがA(end,end-1)で書ける。

いやぁ本とか最初の方飛ばしてるし,今の今まで気づかなかった…
つか載ってたのか?そもそも。

実際に100×100の乱数行列を生成して,A(100,99)をBに代入することを100回繰りかえてしてみましたが下記3つの表現どれもあんまり速度はかわらなそうです。
それならendがやはり楽そうな気がしました。

lengthを使用
B=A(length(A(1,:)),length(A(:,1)-1));

sizeを使用
nm = size(A);
B=A(nm(1),nm(2)-1);

endを使用
B=A(end,end-1);

このエントリに付けられたタグ|MATLAB配列インデックスend

[基本] サーチパスにサブフォルダも含めてパスを追加,削除

単純にひとつのフォルダをサーチパスに追加したり削除したりする場合についてはこちらのエントリに書きましたが,
ここではメニューバーの『ファイル→パス設定』から呼び出せるダイアログボックスにある「サブフォルダも追加」と同じことをコマンドで実行する方法を書いておきます。
addpath(genpath('追加したい最上位のフォルダ'))
rmpath(genpath('C:homesach1omatlabmylib'))

実際にこのようなディレクトリの構成になっている場合の例を載せておきます。
C:homesach1omatlab
  mylib┬mylib1┬mylib1-1
    │   └mylib1-2
    ├mylib2
    └mylib3

まずgenepathコマンドについてですが,詳しくは下記リンクを参考にしていただくとして,とりあえずgenpath('指定ディレクトリ(フォルダ)')としてやれば,指定ディレクトリ以下のすべてのディレクトリを含むパスを出力してくれます。
genpath (MATLAB Function Reference)

例の場合で実行してみると下記のような結果を得ます。
>> genpath('C:homesach1omatlabmylib')
ans =
C:homesach1omatlabmylib;C:homesach1omatlabmylibmylib1;
C:homesach1omatlabmylibmylib1mylib1-1;C:homesach1omatlabmylibmylib1mylib1-2;
C:homesach1omatlabmylibmylib2;C:homesach1omatlabmylibmylib3;

で,実際にサブディレクトリ以下をすべてパスに追加した例が下記です。
>> addpath(genpath('C:homesach1omatlabmylib'))
>> path
    MATLABPATH
    C:homesach1omatlabmylib
    C:homesach1omatlabmylibmylib1
    C:homesach1omatlabmylibmylib1mylib1-1
    C:homesach1omatlabmylibmylib1mylib1-2
    C:homesach1omatlabmylibmylib2
    C:homesach1omatlabmylibmylib3



また削除する場合は同様に下記のようにすればできます。
>> rmpath(genpath('C:homesach1omatlabmylib'))

これらは下記コマンドを実行していただければ確認できると思います。
>> mylib = genpath('フォルダのパス');
>> addpath(mylib);
>> path
>> rmpath(mylib);
>> path

このエントリに付けられたタグ|MATLABサーチパスgenpath