Simulink
初心者
- Simulinkの基本的な使い方を効率よく学習したい
- 公式ドキュメンテーションのページを見ても、用語がわからないので読んでも更に疑問が出てくる
- どこから読んだらいいかわからない
- 急に仕事でSimulinkを使うことになった
- 専門的なことは置いといて、とりあえず必要なことだけ早く知りたい。
- モデルベース開発をこれから始める予定。使い方をさっと学びたい
このような方々に、最低限必要な使い方を、図や例も示しながら解説しています。
具体的には以下の内容を記載しています。(詳しくは目次をご覧下さい。)
- モデルの新規作成方法
- ブロックの配置方法
- 結線の仕方
- モデル画面の操作
- シミュレーションの実行方法
- 実行結果確認方法(データの可視化方法)
なお、筆者はMATLAB/Simulinkを使用して開発をしている現役のエンジニアです。経験を活かして、誰もが知っておくべきだと思うことをまとめました。
MATLABに関する記事は↓こちらをご覧ください。
本記事で使用しているMATLABのバージョンはR2021bです。バージョンによって若干見た目に違いがありますが、基本機能は特に変わりありません。
モデルとは?
モデルとは以下に示すような、特定の機能を持った各種ブロックを接続したグラフィカルな図です。
モデルの例として、公式ページ(ヘルプページ) にあるモデルのサンプル Bouncing Ball Model (跳ねるボールのシミュレーション) を示します。
各ブロックに入る矢印が「入力」、出ていく矢印が「出力」であり、それらを接続することで順番に処理されていきます。このブロックの入出力になっている矢印を「信号」と呼びます。
Simulinkは結果を視覚的にみる手段に優れています。上のモデルでシミュレーションを実行させると、指定した信号(ここではPosition(位置)とVelocity(速度) ) の時間変化の様子を簡単に見ることができます。
公式ページBouncing Ball Model (跳ねるボールのシミュレーション) よりシミュレーション実行結果を抜粋
実行方法や、信号の可視化方法は後述します。
モデルの新規作成方法
まずはモデルの作成方法です。幾つか方法がありますがどれでも構いません。
Simulinkボタンから作成する
MATLABの画面で上部にあるツールストリップ(メニュー)から作成する方法です。
[ホーム]タブにある「Simulink」ボタンをクリックすると、Simulinkのスタートページが開きます。
Simulinkのスタートページで「空のモデル」を選択することで、以下のような空のモデルが「untitled」という名前で作成されます。
新規ボタンから作成する
[ホーム]タブにある「新規」ボタンをクリックすると、Simulinkのスタートページが開きます。
以降は先ほどと同じで、Simulinkのスタートページで「空のモデル」を選択することで、空のモデルが「untitled」という名前で作成されます。
現在のフォルダー画面から作成する
これが一番速い方法かと思います。MATLABの左側の方にある「現在のフォルダー」の枠内で右クリックすると、メニューが表示されます。そこで「新規」を選択し、「モデル」をクリックします。
すると「untitled1.slx」というモデルのファイルが新規作成されます。ダブルクリックすると空のモデルが開きます。
作成したモデルの保存やファイル名変更、ファイルのコピー等は通常のファイルを扱う際と同様です。(Ctrl+sで保存、F2で名前変更など)
ブロックの配置方法
次に、モデルにブロックを配置していきましょう。
ライブラリブラウザーから選択する
「ライブラリブラウザー」ボタンをクリックすると、「Simulinkライブラリブラウザー」画面が開きます。
Simulinkライブラリブラウザーでは、カテゴリー別に、用意されているブロックを選択することができます。
配置したいブロックをモデルの画面にドラッグ&ドロップします。
[便利] ブロック名の頭文字を入力し、表示される候補から選択する
ブロック名がわかっている場合はこちらの方法がおすすめです。
モデル画面内で、ブロックを配置したいポイントをクリックし、ブロック名の頭文字を入力すると、候補が表示されます。
ここでは’a’と入力したので、a から始まるブロックのリストが表示されます。
リストから選択すると、ブロックが配置されます。
ブロックのコピー、削除
配置済みのブロックをコピーし、指定したポイントに貼り付けることもできます。
もちろん、複数ブロックを一度にコピーすることもできます。また、別のモデルからのコピーも可能です。
Shiftキーを押しながらコピーしたいブロックを一つずつ選択してもいいですし、左クリックを押したまま範囲を指定し、一度に多くのブロックを選択することもできます。
ブロックを選択した状態でDeleteキーを押下すると、ブロックを削除することができます。
結線(ブロック同士の接続)の方法
次は配置したブロック間を接続します。
ブロックの端を接続する
以下のように、接続元のブロックの端にある>をクリックしたまま、接続先のブロックの>までドラッグすれば接続できます。
端同士が信号線で接続された状態になります。接続されたまま、信号線をマウスでつまんで好きなように上下左右に移動することもできます。
位置を合わせればワンクリックで接続できる
以下のように、接続元と接続先のブロックの位置を合わせてあげると、薄い水色の線が表示されます。
この薄い水色線はワンクリックで接続できます。
信号線を分岐する
一つの線から分岐したいような場合、以下のようにCtrlキーを押しながら分岐したいポイントをクリックし、ドラッグすると、分岐した線が現れます。
後は通常の接続と同様に接続先までドラッグします。
ブロックのパラメーターの変更方法
ブロックのパラメーター(値や設定)を変更する方法を説明します。
ブロック上でダブルクリック
変更したいブロック上でダブルクリックすると、ブロックパラメーターのダイアログが表示されます。
ここではGainブロックにおける「ゲイン」値を1→2に変更しています。
ゲイン:の欄で、1を2に変更し、「適用」ボタンを押下すると、反映されます。
ブロック上で右クリック→ブロックパラメーターを選択
変更したいブロック上で右クリックすると、様々なメニューが表示されます。メニューから「ブロックパラメーター」を選択すると、ダブルクリック時と同様に、ブロックパラメーターのダイアログが表示されます。
[便利] 数値変更等はブロック上で直接変更可能
数値を変更するだけなら、パラメーターのダイアログを開かなくても、ブロック上で直接変更できます。
例えばConstantブロックをクリックして、
値の部分をクリックすると、「1」が水色枠で囲まれて編集可能な状態になります。
後は値を変更し、Enterを押下すれば確定されます。
パラメータの詳細はヘルプで確認
ブロックには様々なパラメータがあります。ブロックパラメーターのダイアログのヘルプを押すと、ヘルプページ(ドキュメンテーション)が開きますので、そちらで詳細を確認してください。
モデル画面のズームイン・ズームアウト・移動・全体表示
モデルが大きくなると、ズームイン・ズームアウト、移動や全体表示をしたい場合があります。操作方法を説明します。
マウスホイールの上下でズームイン・ズームアウト
拡大したいモデルがある方向にマウスのカーソルを置いて、ホイールを上に回すとズームイン(拡大)します。下に回すとズームアウト(縮小)になります。
マウスホイールを押したままドラッグで移動(パン)
マウスホイールを押すと、マウスのポインタが手の形に変化します。ホイールを押したままドラッグすると移動(拡縮なしの平行移動=パン)します。
[便利] スペースキーで全体表示
ズームイン・ズームアウトや移動の後、モデル全体が画面いっぱいに丁度収まるようにしたい場合が多くあります。その丁度いい拡大率にするにはスペースキーを押します。
アイコンによるズームなどの操作
以下のアイコンでもズームや全体表示(ビューに合わせる)などの操作が可能です。
モデル画面の書式設定
モデル画面では様々な説明を追加できます。ブロック名を表示したり、ブロックのプロパティ(設定値)を表示したりすることができます。
ブロック名を表示
以下のようなモデルを作成したとします。作成した人は各ブロックの名前や設定値はわかっていると思いますが、この状態では人に説明するには少し見づらいかもしれません。
ここではブロック名を表示してみます。
マウスの左クリックを押したまま範囲を選択し、表示したいブロックを囲み選択状態にします。
その状態で右クリックしてメニューを表示させ、「書式設定」→「ブロック名を表示」→「オン」を選択します。
ブロック名が表示されました。
ブロックプロパティの表示
ブロックに任意の説明や、設定値の表示をすることもできます。※たくさんの表示機能がありますが、ここでは基本の一部のみ説明します。
初期条件(InitialCondition)
例えば上の「Unit Deley」ブロックのパラメーターである「初期条件:」は以下のように値「0」が設定されています。
この初期条件の値をブロックの下に表示したい場合、以下のようにUnit Delayブロックのメニューで「プロパティ」を選択し、ブロックプロパティのダイアログを表示させます。
ブロックプロパティのダイアログにて、ブロックプロパティトークンのリストの中から「%<InitialCondition>」を選択し、中央の「>>」を押下すると、
右の「注釈のテキストとトークンを入力:」側に「%<InitialCondition>」が表示されます。
この<InitialCondition>の部分が先ほどの初期条件の値「0」を指しています。
よって、「適用」を押すと以下のように「0」が表示されます。
説明(Description)
ブロックプロパティのダイアログの「一般」タブの「説明」欄にテキストを入力し、「プロパティトークン」のリストで「%<Description>」を選択すると、説明欄に記載したテキストがブロックの下に表示されます。
注釈
モデル上で任意のテキストを記入することができます。記入したい場所でダブルクリックし、「注釈の作成」を選択すると、任意のテキストを入力できるようになります。
※Simulinkのバージョンによっては、ダブルクリックするだけで下側の画面(テキスト入力待ち)になります。
フォントの色や書式も変更することができます。
シミュレーションの実行方法
モデルでブロックを配置し、ブロック間の必要な結線・接続ができたら、シミュレーションを実行してみましょう。
ここでは先ほどまでの説明でも使用していた以下のモデルを実行するものとします。
なおシミュレーションでは時間毎の実行単位があり、それを「ステップ」と呼びます。
実行ボタンでシミュレーションを実行
ツールストリップの[シミュレーション]タブの「実行」ボタンを押下すれば実行できます。
終了時間の設定
モデル作成時の初期状態では、以下のように「終了時間」が「0.0」となっている場合があります。この状態ではステップが1つも実行されず一瞬で止まってしまいます。
そこで、終了時間に例えば 「10」と入力し、再度実行すれば、0~10の時間のシミュレーションが実行されます。
なお、ここでは最低限の設定のみで実行しましたが、0~10という時間をどの程度細かいステップで実行するかは設定で変更することができます。
次の見出し「実行結果の確認方法」の中で、そのあたりも説明します。
実行結果の確認方法(データの可視化方法)
ここでは、実行した結果、信号がどのように変化したのかを確認する方法について説明します。
Scope(スコープ)ブロック
このモデルでは最終出力信号をScopeブロックに接続しています。Scopeブロックでは信号の時系列変化をグラフ(各時間毎のプロット)で確認することができます。
Scopeブロックをダブルクリックすると、グラフが表示されます。
開始時間0~終了時間10にかけて、0.2時間毎に値が1ずつ増加していることがわかります。
ビューアーの作成と接続
以下のようにScopeブロックではなく、Terminatorブロックという終端を意味するブロックに置き換えた場合でも、Scopeブロックの時と同じ確認をする方法があります。
値を確認したい信号線を選択した状態で、右クリックのメニューから「ビューアーの作成と接続(C)」→「Simulink」→「Scope」を選択します。
すると、このようにScopeブロックのような小さなアイコンが信号線に表示されます。
シミュレーション実行後に、このアイコンをダブルクリックすると、Scopeブロックと同じ画面を表示できます。
複数の信号線を同じビューアー、スコープで確認する
今度は、以下のように1ずつ小さくなる値を出力するモデルを追加してみました。この出力の信号線の値を、先ほど作成したScopeブロックやビューアーに接続して、同じ画面で2つの信号の値を確認することができます。
ここでは上部の信号で作成したビューアーに、下部の信号を接続してみます。
「ビューアーに接続する」→「Scope1」(最初に作成したビューアーの名前)を選択します。
すると、2つの信号線の値が同じ画面で確認できました。
ここではビューアー(小さなアイコン)で実現しましたが、以下のようにScopeブロックに2つの信号を接続することでも同じことができます。
[便利]データインスペクター
Scopeブロックやビューアー以外にデータインスペクターという機能でも信号のログを確認できます。こちらの方が使いやすい印象です。
信号を選択し、右クリックのメニューから「選択した信号のログ」を選択します。(Simullinkのバージョンによってはメニューの名称やアイコンが異なります)
すると、以下のようなアイコンが信号線に表示されます。
下側の信号にも設定しておきます。
そして、シミュレーション実行後に、このアイコンをクリックすると、データインスペクターが起動し、信号のログを見ることができます。(シミュレーション実行前にアイコンをクリックしても、該当の信号の値は表示されないので実行後にクリックしてください。)
データカーソル
またデータインスペクターでは、以下のボタンを押下し、「データカーソル」を表示する設定にすると、任意の時刻における、各信号の値を確認することができて便利です。
データカーソル(縦の黒い線)はクリックしながら動かすことができます。
データインスペクターの画面構成はバージョンによってかなり異なりますが、様々な機能がありますので、データを可視化、解析する際によく使うことになると思います。
[便利]Figureへ出力
データインスペクターでもScope(ビューワー)でも、ログをMATLABのデータ可視化機能であるFigureで表示させることができます。
データインスペクターの場合
スナップショット(カメラアイコン)のボタンで、MATLAB Figureを選択し、「スナップショット」ボタンを押すと
Figureでデータを表示することができます。
Figureにも様々な機能がありますが、「データヒント」という機能は役に立つと思います。
グラフ右上あたりにカーソルを置くと、アイコンが幾つか表示されます。
この中からデータヒント選択してオンにした状態で、任意の点をクリックするとその点の値が表示できます。
Shiftキーを押しながら選択すれば幾つもの点のデータを可視化することができます。
Scope、ビューアーの場合
[ファイル]-[Figureへ出力]を選択します。
こちらからFigureを作成した場合、ツールバーの構成が若干異なっており、データヒントは以下の位置にあります。(※以前のSimulinkバージョンではデータインスペクターからFigureを出力する方法や、Figureのツールバーの構成はこちらと同じでした)
その他のデータ可視化方法
Simulinkでデータを可視化する方法は他にもたくさんあります。詳しく知りたい方は、公式ドキュメントのシミュレーション データの可視化方法の決定をご覧ください。
ステップ実行
シミレーションをステップ単位で進めることもできます。ツールストリップの[シミュレーション] タブの「ステップを進める」は、押す毎に1ステップずつ実行されます。( [デバッグ] タブにも同じボタンがあります)
モデル画面の下の枠にT=0.200と表示されているように、ステップを進めるボタンを押すと1ステップ実行された後、一時停止された状態になります。
データインスペクターやScopeでのログも、1ステップずつ可視化されていきます。
今回のようなシンプルなモデルでは使う必要性はありませんが、複雑なアルゴリズムを実装した大規模なモデルをデバッグする場合には、1ステップずつ信号の変化点や処理の分岐点を観測したい場合があります。そのような場合には有用な機能です。
ソルバーの設定(可変ステップ、固定ステップ、連続、離散)
「終了時間の設定」の説明でも少し紹介しましたが、モデルの最小実行単位であるステップがどの程度の長さ(
サイズ)となるか、言い換えればどの程度の間隔でデータをサンプリングするかは、「ソルバー」の設定により決まります。
[モデル化]タブの「モデル設定」を押すと、「コンフィギュレーションパラメーター」のダイアログが開きます。(※Simulinkのバージョンによっては「モデル設定」ではなく「コンフィギュレーションパラメーター」というメニューやボタンが存在する場合もあります)
左のリストの「ソルバー」を選ぶと、シミュレーション時間の開始時間、終了時間や「ソルバーの選択」、「ソルバーの詳細」といった項目が現れます。
ソルバーの選択の「タイプ」は「可変ステップ」と「固定ステップ」があります。
「可変ステップ」とはデータのサンプリングのタイミング(=1ステップの長さ)が可変、「固定ステップ」はそれが固定になるということです。
ソルバーの選択の「ソルバー」は「自動」や「離散」などから選択します。
「自動」は連続時間信号(値が時間とともに連続的に変化する信号) を含むモデルで利用します。
どの設定、組み合わせにするべきかは、モデルの作り次第です。この辺りも公式ドキュメントのソルバーの比較をご覧いただくのが良いかと思います。
可変ステップ・固定ステップ
「可変ステップ」では、以下図の左側のようにステップの周期が変化しています。右側「固定ステップ」では0.25毎に固定でステップが実行されています。
公式ページ Simulink の可変ステップ ソルバー より抜粋
「固定ステップ」で は、一定の時間間隔でモデルを解きます(データをサンプリングします)。ステップの間隔(サイズ)は指定するかソルバーに自動選択させることもできます。一般的にステップ サイズを小さくするとシミュレーションに必要な時間が長くなりますが、細かい単位でデータがサンプリングされるので結果の精度は向上します。
「可変ステップ」では、モデルのデータが細かく変化している時刻では精度を上げるためにステップ サイズが小さくとられます。データ変化が細かくない時刻ではステップ サイズが大きくなります。
連続、離散ソルバー
冒頭に紹介した以下サンプルモデルは連続時間信号が含まれています。
公式ページにあるモデルのサンプル Bouncing Ball Model (跳ねるボールのシミュレーション)
本モデルではソルバーの設定は以下のようになっています。
実行結果は以下のように、データが連続的に変化したものとなります。幾つかの点でデータヒントを表示していますが、データが連続しているので、どこまでも細かい時間のデータ値が表示できます。
一方、これまで紹介してきた以下のような信号処理モデルは、基本的に離散時間信号で成り立っています。
こういった信号処理モデルでは、タイプ=固定ステップ、ソルバー=離散(連続状態なし)とし、サンプリング周期を「固定ステップサイズ(基本サンプル時間)」で指定します。
サンプル時間を「1」とすると、離散的にT=1ずつサンプリングされます。
ソルバーの説明が少し長くなりましたが、Simulinkでのモデル作成方法や実行方法、データの可視化方法などの基本的な使い方や、関連する用語の説明は以上です。
まとめ
Simulinkはシステムのアルゴリズムの検証、データ解析に最適なツール
本記事ではこれからSimulinkを使う方に向けて、是非覚えておいていただきたい必須の知識や使い方を、図や例も示しながら紹介しました。
ここで挙げたものはまだまだ一部に過ぎませんが、何をするにしても覚えておくべきものをまとめましたので、是非参考にしていただければと思います。
より詳しい解説や、専門的な知識についても今後紹介していきたいと思います。
シミュレーションツールとして本当に利用価値の高いものだと思いますので、様々な計算、アルゴリズムの検証、データの解析、データの可視化、AI、自動運転、何でも取り組んでみましょう。
筆者
レッツ、シミュレーション!
こちらも合わせてご覧下さい。
MATLAB/Simulinkが学べる、相談、依頼できるサービスはこちら
MATLAB/Simulinkをもっと理解したい、コード作成を手伝ってもらいたい、わからない部分を教えてほしい、気軽に相談したい、ということはありませんか?
ココナラではMATLAB/Simulinkのサービスを提供している方もたくさんおられるので、気軽に探してみてください
また、Udemyは英語の講座が多いですが豊富な講座のバリエーションがあります。大学の課題、研究・開発、データ分析、課題解決に役立ちます。
ココナラ
ココナラでMATLAB,プログラミングの相談・作成依頼↓登録は無料です会員登録(無料)をして、「MATLAB」「Simulink」で検索すればたくさんのMATLAB/Simulinkに関するサービスが見つかります。プログラミングスクール代や講座代を支払うより、安く依頼・相談できるものもたくさんありますよ。
また、MATLABのスキルに自信がついてきたら、ぜひご自身で出品して見て下さい。依頼を受けて案件をこなせば、稼ぎながら更なるスキルアップに繋がります。
筆者も実際にサービスを提供して稼ぐことができたので、以下記事でやり方やポイントを解説しています。サービス提供も無料で気軽にできます。
こちらをチェック↓
Udemy
[MATLAB/Simulinkの人気のオンライン学習はコチラをチェック↓]
「MATLAB」「Simulink」で検索すればたくさんのMATLAB/Simulinkに関する講座が見つかります。正直英語が苦手だとつらいですが、動画なので何度も見返せば、様々な技術、やり方が身に付くと思います。
Simulinkおすすめ書籍
最後に筆者のおすすめの書籍を紹介しておきます。
Simulinkの操作方法や基礎知識は、ブログや公式ヘルプから知ることができますので、より本格的にSimulinkを使った制御モデルを扱いたい場合、モデルベース開発を理解したい場合は、本書で演習をこなしながら進めるとよいと思います。筆者の周りのエンジニアは多くの人がこの本を使っています。
是非、これらの参考書類もお手元に置いて、効率よく学習いただければと思います。
MATLAB/Simulink学習におすすめの書籍はこちらです。
※Amazon 評価は 2024/3月時点のカスタマーレビューの点数です。
タイトル | 画像 | 購入先 | ポイント | Amazon評価 |
---|---|---|---|---|
はじめてのMATLAB | Amazon 楽天 Yahoo | MATLABの基本的な概念や操作方法を図や具体例を交えてわかりやすく説明 | ||
最新MATLABハンドブック第七版: 機械学習・ディープラーニング対応 | Amazon 楽天 Yahoo | MATLABの基本的な機能から最新のディープラーニング技術までを包括的にカバー | ||
MATLABクイックスタート 数式処理から機械学習まで | Amazon 楽天 Yahoo | 数学的基礎から、データ分析や機械学習アルゴリズムの実装までカバー | ||
MATLABではじめるプログラミング教室 | Amazon 楽天 Yahoo | 基本的な構文や機能から、初学者でも理解しやすいように解説 | ||
最新 使える! MATLAB 第3版 | Amazon 楽天 Yahoo | 基本的な使い方から高度なテクニックまで、幅広いトピックを網羅 | ||
MATLAB/Simulinkによる制御工学入門 | Amazon 楽天 Yahoo | MATLABとSimulinkを使ったシミュレーションや設計手法について詳しく説明 | ||
自動車業界MBDエンジニアのためのSimulink入門 | Amazon 楽天 Yahoo | Simulinkの基本から自動車システムのモデリングやシミュレーション、実装までを詳しく説明 | ||
MATLABで学ぶ実践画像・音声処理入門 | Amazon 楽天 Yahoo | 実際の画像や音声データを処理し、解析する方法について詳しく説明 |
Audible 無料体験に登録 (12万作以上のオーディオブック)
Amazon Music Unlimited 無料体験に登録
詳しくは以下の記事で解説・紹介しています。
長くなりましたが、ご覧いただきまして有難うございました。良ければコメント、改善要望などもご自由にお書き下さい。参考にさせていただきます。
良ければフォローお願いします。
コメント