コンテンツへスキップ

MATLAB使い方個人的まとめ

MATLABの使い方を個人的にメモします。 ボード線図と時間応答。ごく簡単な部分だけです。

本家様

MATLAB 入門 -MathWorks

目次

  • MATLABとは
  • simlinkとは
  • 構成
  • 使い方

MATLABとは

技術計算のための有料ソフトで、基本的な機能の他はさらに課金する必要があります。その拡張機能によって様々な場面で使用されており、企業で使用されるケースも多々あります。学生は研究室で使えたりします。個人で購入する場合でも学割があり、生協でかなり安く買えるそうです。

行列と配列の数学を直接表現するプログラム言語と反復的に実施する分析、設計プロセスに適したデスクトップ環境がセットになっています。

基本的には3つのウインドウをつかう。Simlinkは拡張機能のようなもの。

  • コマンドウィンドウ
  • m-fileウィンドウ
  • Simlinkウィンドウ

MATLAB -MathWorks

(追記)無料の似たようなソフトScilabというものを見つけました。=>Scilab/Xcosのインストールと使い方 MATLABとの比較

simlinkとは

Simlinkウインドウを使用すると、グラフィカルにブロック図を書けばコードに変換してくれます。制御工学とかと相性が良いですね。

Simlink -MathWorks

構成

コマンドウィンドウ

会話的で、すぐに結果が出ます。

>> a = [1 2 3; 4 5 6; 7 8 9]
a =
        1 2 3
        4 5 6
        6 7 8
コマンドウィンドウ

こんな感じ。関数も使えます。範囲で指定する方法がわからなかったので直接配列を書きました。

>> x = [0 pi*1/6 pi*1/3 pi*2/3 pi*5/6 pi pi*4/3 pi*3/2 pi*5/3 2*pi]
>> plot(x,sin(x))
sin(x)

linespce(始点、終点、点数)を使えば楽ですが、研究室に合ったやつには入っていない関数らしい。

関数を定義する事も出来ますが、とくに使う予定がないので省略します。

m-fikeウィンドウ

shellみたいなものだと思います。上とほとんど同じです。

>> x = [0 pi*1/6 pi*1/3 pi*2/3 pi*5/6 pi pi*4/3 pi*3/2 pi*5/3 2*pi]
>> plot(x,cos(x))

保存するとき、名前がモデルと完全に同じだとエラーを吐くらしいので、微妙に変えておくと無難です(user/tutorial01_p.mにしました)。メニューバーのデバッグ/実行で実行します。この時たぶん、カレントディレクトリにありません、などエラーを吐いたら、コマンドウィンドウ上の方のカレントディレクトリを変更します。

デバック/実行か実行アイコンから実行するとこんな感じ。

cos(x)

Simlinkウィンドウ

ドラッグアンドドロップでブロック線図を作成します。割愛。

ちなみに、m-fileのエディタでmdlファイルを開くとめちゃくちゃいろいろ書いてます。

使い方

簡単な周波数解析

MATLABを起動し、メニューバーにあるSimlinkアイコン(ごちゃついたヤツ)からSimlinkを起動します。

Simlink

Simlinkを起動すると、自動的にlibrary Browserが開くと思います。

Simlinkのファイル/新規作成/モデルをクリックして、出てきたウィンドウを保存(user/tutorial01.mdlにしました)。

Simlink library Browser には関数やinputなどが入っていて、libraryからmodelへドラッグアンドドロップすることでブロック線図を完成させます。

ひとまずこのような図を作ります。

  • Continuousには1次遅れ系の伝達関数っぽいブロック(Transfer Fcn)などが入っています。
  • Sinksにはoutput(Out1)やオシロスコープ的なもの(Scope)などが入っています。
  • SoucesにはInput(In1)や時間測定器(Clock)
continuous
sink
souces

ブロックの端に「>」というのがありますので、それをドラッグして他のブロックに接続します。

開ループ

これでひとまず開ループの完成。矢印上で右クリック・ドラッグすると→を分岐できます。 Math Operatioのsumと合わせて使用して閉ループを作ることもできます。

関数をバブルクリックするとパラメータを変えるウィンドウが出てきますので、適宜変えていきます。

閉ループ

Numeratorを[1]、Denominator[2 3] にすると、

$ \frac{1}{2s+3}$

$$ \frac{1}{2s+3}$$

Numeratorを[1]、Denominator[2 -3 4] にすると、

$$ \frac{1}{2s^2-3s+4}$$

になります。ブロック図ができたらプロットのためのプログラムを組みます。

m-fileを作成します。

コマンドウィンドウから、新規作成/M-fineで、M-fileウィンドウを開きます。

T = 1
[num, den]= linemod('tutorial01') 
w=logspace(-3,3,100); 
figure 
bode(tf(num,den), w) 
grid on 

これで、実行すると、ボード線図が描画されます。このfigureで保存すると、画像を保存できます。

bode線図

簡単な時間解析

時間情報をグラフに書き込むときは、出力情報に紐づけられた時間の配列を変数に格納してplot(t,y)などを実行することになります。

同様にモデルを作成します。

  • Sourceからステップ信号(Step) 、時間(Clock)
  • Continuousから伝達関数(Transfer Fcn)
  • Sinkから「外部へ」(simout)

ブロック線図を作成したら、simoutをダブルクリックして、Clockとつながっている方は変数名をt、保存フォーマットをArray(配列)に、transfer Fcnとつながっている方は変数名をy、保存フォーマットをArray(配列)に変更します。

シミュレーションパラメータ

メニューバーのシミュレーション/シミュレーションパラメータから開始時間を0、終了時間を10*T、ソルバオプションのタイプを固定ステップ、ode1(Euler) ステップサイズをT/10に変更したら、メニューバーの下の△で実行。

コマンドウィンドウで、

>>figure
>>pot(t,y)
>>xlabel('Time[s]'),ylabel('Output')

とすると、こんな感じ。

時間解析

これを、m-fileのコマンドでやると以下のようになります。

T = 1;
figure
plot(t,y)
xlabel('Time[s]'),ylabel('Output')
grid on

以上です。あとはその都度組み合わせて使っていきましょう。

(追記 2019/6/24)Scilabに関して追記しました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です