MATLAB

m-file上のデータの保存あれこれ

MATLABでデータを保存したり書き出したりする際にsave関数やcsvwrite,dlmwriteを使用する人は多いんじゃないでしょうか。 こう言った関数を使用する際、プログラムを何回かまわしてるうちに前に保存していたmatファイルあるいはcsvファイル,txtファイルを上…

Fletcher-Reeves法サンプルプログラム

無制約最適化問題で使われる(?)Fletcher-Reeves法のプログラム例を載せます.アルゴリズム習得用で組んだものです. 手法自体は適当に調べました. http://people.equars.com/~marco/poli/phd/node54.html例:天井からばね定数1のばねによって連結された4…

0を通る点を探す

実験などから得たシグナルで,0を通る点を探したい時には find関数 を使いましょう.例えば,時間軸のベクトルがt,シグナルのベクトルがvだとして,plot(t,v)で以下のようなチャートが得られたとする.このシグナルvから,0を通過する直前のインデックスを…

外れ値をデータから取り除く

外れ値(outlier)をデータから取り除く方法.xという配列にデータがいくつもあって,偏差が標準偏差の3倍以上であるものを省くには, x = x(abs(x-mean(x)) とすれば良い.ちなみに,偏差と標準偏差は以下のように求めている. abs(x-mean(x)): 偏差 std(x): …

Figureの最大化

figure関数などを使って表示させたウィンドウを最大化したいときがある.そんなときには,MATLAB CentralのAlain Trostelによるmaximize figure windowsというものをダウンロードしよう.ダウンロードしたファイル(名前はmaximize.zip)を展開し,カレントデ…

テキストデータから情報を抜き出して書き出す方法

前回のエントリーに少しだけ関連して.前回のエントリーではファイル名の一覧を取得してテキストファイルに書き出したが,そのテキストデータの各行がID_日付.拡張子のような構成だった場合にそこからIDの部分だけを抜き出す方法を.例えば 001_20100601.txt…

大量のテキストデータをさばく

大量のデータをいちいちloadやimportdata関数にファイル名をしてして入れていくのが面倒なので,こんなのを考えました(大したあれじゃないけど) ファイル名一覧の入ったテキストデータを作成 Matlabの適当な変数にファイル名一覧を格納 一覧からファイル名…

常微分方程式の数値解

Matlabにて運動方程式なんかを解くときに重宝するのが,ode45という関数(ソルバー).でも,この関数の使い方はちょっとトリッキーで,解かせたい常微分方程式をMatlabの関数として定義してやらなければいけない.以下,(現代制御理論の状態方程式を理解して…

ピーク値の読み取り

パワースペクトルのグラフからピークとなる周波数とそれに対応するパワーを、findpeaks関数を使って読み取る方法を紹介する。まず、周波数 f と パワースペクトル Y がすでに用意されているものとして、 plot(f,Y) とすると、次のようなグラフが得られるもの…

mファイルを見やすくする

※ただ見やすくしたいというだけなので、個々人の嗜好にかなりよります。とりあえず簡単なのを3つ。 (1)Matlabでmファイルを開くと、デフォルトでは勝手に右側に線が書かれる。 これは設定で一行の文字数に制限を加えられており、その制限範囲を表示している…

グラフにTeXコマンドを使ってギリシャ文字や数式を表示させる方法

Matlabで軸のラベルにギリシャ文字や時間微分を表すドットとかを表示させたいときはよくあるのだが、そういうときにはxlabel関数やylabel関数に以下のように 'interpreter', 'latex' という引数を渡せば良い。 ylabel('$$\dot \theta \ {\rm [rad/s]}$$', 'i…

自分で作ったファンクションファイルの使い方

1.作成した関数を使うM-fileと同じディレクトリにおく. 2.ホームディレクトリにおく. 3.自分の作った関数などと併せて適当なフォルダにおいておき, そこにパスを通す. (パスの通し方:MATLABはホームディレクトリにstart.mというファイルが ある場合に…

figファイルからのデータ抽出の方法.

必要なデータのあるfigureがfigure(1)とする haxes=get(1,'children'); hline=get(haxes,'children'); X = get(hline,'XData')'; Y = get(hline,'YData')';childrenってなんだ!?このままだとsubplotの時はうまくいかない. このままだと複数のデータをプロ…

数式を文字のまま解かせる方法

Mathematicaを使わず、Matlabで数式を文字のまま解かせる方法があるみたいです。 http://user.numazu-ct.ac.jp/~mochizuki-k/matlab/file3.html表示がちょっと醜いですが、普通に使えます。