MyEnigma

とある自律移動システムエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

MATLABとSimulinkに関するメモ

最新MATLABハンドブック第五版

最新MATLABハンドブック第五版

はじめに

最近知ったMATLABとSimulinkに関する事柄

のメモです.

(関係ないネタもたくさん混じっていますが(笑))


MATLAB

・MATLABはアメリカのアルゴンヌ国立研究所の数値解析学者Cleve Molerによって開発された。

ちなみにアルゴンヌ国立研究所とは,アメリカ合衆国最初の国立研究所で,

かの有名な原爆開発のマンハッタン計画の中心地みたいですね.

今は,電気自動車のためのリチウムイオン電池の研究をしているみたいです.

アルゴンヌ国立研究所 - Wikipedia



・MATLABは,もともとLINPACK(リンパック):線形計算パッケージ、

EISPACK(エイスパック):固有値、固有ベクトルパッケージに簡単にアクセスするための

インターフェースを開発したソフトウェアである。



・MATLABでは、数字や演算子で始まる変数名の変数は設定できない。



・ある変数名が有効であるかどうかはisvarnameという関数を使用する。

 isvarnameは変数名が有効である場合には1を、そうでない場合には0を出力する。ッ


 Trial>> isvarname neko
 ans =1
 
 Trial>> isvarname *
 ans = 0


・MATLABでは、変数名の長さに制限は無いが、

 あまり長いとはじめのN文字(デフォルトでは63文字)しか認識されず、

 残りの文字列は無視される。

 認識可能な文字数はnamelengthmax関数で確認可能。



・コマンドウィンドウの数値のフォーマットを変化させたい場合にはformatコマンドを使う。

 表示桁数を増やしたい場合: format long

元に戻したい場合: format short



・eval関数を使用すれば、MATLABのフォーマットで書かれた文字列式の計算ができる。。

 x=10;
 y=20;
 z=30;
 v='x+y+z';
 res=eval(v)
 実行結果:
 res = 60


・多項式の展開はconv関数で計算できる。

Trial>> f=[1-2 -1 2];

Trial>> g=[1 2];

Trial>> conv(f,g)

ans = -1 -3 0 4


・解がわかる式の展開の場合にはpoly関数を使用する。

Trial>> poly([-1 1]) %(x+1)(x-1)の展開=x^2−1
ans = ([1 0 -1])


・csvファイルを読み込む関数である

csvreadの読み込み位置インデックスは「0」から始まる


・Simulinkは微分方程式を簡単に表現できる。



・ラプラス変換とは、簡単に微分方程式を解くための方法。

微分と積分をsと1/sのように置く事により、

微分方程式を代数方程式(四則演算で)として解くことができる。

元々は数学的な説明はなく、便利なツールとして使われていた。



・s=jωとして置くと、ラプラス変換はフーリエ変換と同じ処理になる。



・伝達関数とは、入力と出力の関係が記述された微分方程式をラプラス変換し、

初期値をゼロとして、入力と出力の比をとったもの。



・Z変換では、時間を一つ進ませる時にはzをかける。また、一つ戻すには1/zをかける。



・制御では基本はPIDだが、それぞれの信号をより制御しやすくするため、

テーブルを使って非線形なモデルを実現する。



・Signal Routingブロックでは、

スカラー信号のベクトル化やif-thenなどの条件分岐を行うSwitchブロックなどがある。



・Switchブロックは、HILSでコードを生成するときにif-thenブロックより安定するらしい。



・Sinksブロックでは、simoutというワークスペースに変数を吐き出すブロックもある。



・S-Functionとは、Cの関数をSimulinkで使えるようにする関数である。

 ブロック線図はfor文があまり得意ではないため、

 その部分をS-Functionを使って,Cで書くということがよく使われる。



・Simulinkではソルバの設定が非常に重要。

 ソルバ:数値積分をしてくれるアルゴリズムのこと。

 連続値の積分はコンピュータでは完全にできないので、

 あたかもきちんと積分しているように計算してくれているアルゴリズム。



・可変ステップソルバ、固定ステップソルバ:

 時間刻みを固定にするか、またはプロファイルによって変化させるかを決める。



・非線形なシステムだと、伝達関数は使えない。



・運動方程式は必ずSimulinkで解ける。



・PIDは産業界で一番使われている制御方法である(80%)