matlabユーザーコミュニティー

MATLAB和Si万博1manbetxmulinkユーザーコミュニティー向け日本語ブログ

万博1manbetxMATLAB仿真软件APIでから仿真软件を操る

こんにちは,テクニカルサポートエンジニアの遠藤と申します。
このブログでは以闪电前讨论の発表者として制作物について語らせていただきました。

万博1manbetx万博1manbetxSimulink API.について书签ていきたいととますます。

万博1manbetx仿真软件は基本的に仿真软件エディタ上でマウス操作によってモデルを編集していきますが,何度も同じような操作を行う場合や大規模モデルで特定の種類のブロックの設定を一度に変更するような場合など,マウス操作よりもプログラムから操作してしまった方が楽なことがあります。

このような场合并に利なのがs万博1manbetximulinkapiです。

万博1manbetx仿真软件APIとは

万博1manbetxMATLAB仿真软件APIとは,から仿真软件の機能を使用するためのコマンド群のことで,仿真软件のエディタ上で行っている操作の一部(ブロックの追加やパラメータの変更など)をMATLABからプログラム的に行うための機能です。

万博1manbetxSimulink APIの基本的な使いははプログラムによるモデル化学基因“で紹介されています。

万博1manbetx仿真软件APIの関数一覧

プログラムによるモデル編集「││,用词されて关键

万博1manbetx仿真软件を起動するコマンドからブロックを追加するコマンドまで様々なコマンドが用意されていることがわかりますが,さすがにこれらすべてを一度に解説することはできないので,今回は個人的に使用頻度の高いと思われる“パラメータの変更“について詳しく解説していきたいと思います。

ブロックのパラメータの変更

モデルを编集していく中で,

  • 条件によってモデル上のブロックのパラメータをmスクリプトから変更したい
  • 特价ののブロックのの设定をしてて変更するようなスクリプトが

というような需要は一定数あるかと思います。

このようなスクリプトを作成するときに便利なのが

get_param.
set_param

という2つの関数になります。

get_param, set_paramは,ブロックやモデルのパラメータの取得および変更をするための関数です。
使うときは,

p = get_param(ブロックパス,“パラメータ名');
set_param(ブロックパス,パラメータ名”,パラメータ値);

という构文を使使ます。第一代数量のオブジェクトは,基本的に阶层を含んだ名('型号/范围'など)を文字列でしし。

例えば,以下のようなmyModel。基金的というモデルがあったとします。

このモデルの增益ブロックブロックのゲイン値を取得てみましょましょましょての构ましょ従う従うととてみ构に従うと

>>增益= get_param('myModel/增益','增益')

によってゲイン値が取得できるはずです。実際に実行すると……

收益=
“5”

ゲイン値が文字列として取得できました。

間違いやすいポイントとして,获得ブロックのゲイン値などブロックダイアログ上で入力するパラメータは基本的に文字列となります。
そのため,取得したパラメータを数码に直すためはstr2num关关などセットで使ましょう。

>> value = str2num(增益)
值=
5

10次に,ゲイン値をに変更してみましょう。set_paramの構文に従って,

> > set_param(“myModel /增益”,“获得”,“10”);

を実行する,

ゲイン値が変更されたた。

GET_PARAMの时とにに,set_paramでもゲイン値は列列として必要ががありますます。
例えば次のようなコードだとエラーになってしまうので注意です。

> > set_param (myModel /增益,增益,10);%数码を直接与えるのは间违い!
パラメーター“增益”に対する获得块“增益”内の設定が無効です

それでは,今度は增益ブロックブロックの乘算算算算をを「要素(k. * u)「からから行」

前述した通り,set_paramでパラメータを変更するにはパラメータ名が必要になります。
“乗算“のパラメータ名はどうやって調べればよいのでしょうか……?

このこのようなときときにに利なの「」機能です。「乗算」の部分を右クリックすると、「これはなに?」というポップアップが出てきます。

これをクリックすると......

このように,パラメータの説明に加えて,パラメータ名,データ型,取り得る値などを確認することができます。
“乗算“は“乘法”というパラメータ名のようなので,以下のようなコマンドを実行してみます。

set_param('mymodel / gain','乘法','矩阵(k * u)');

「乘「」を変更することができました!

ちなみに,パラメータ名などの情情各ブロックのヘルプドキュメントから确认こともできできできことももでき
複数のパラメータをまとめて確認するときなどはヘルプを見た方が楽ですね
(各各ブロックのヘルプヘルプはダイアログの「ヘルプヘルプますチェックチェックでき)。

ダイアログにないブロックパラメータ

前述した通り,ブロックのダイアログにあるパラメータは「これはなに?」机能やヘルプドキュメントでパラメータ名や取りうる値を调べることができます。

しかし,ブロックの位置や背景色などの一般的なパラメータについてはこの方法では確認することができません。
ここここで役立つの,「共通のブロックプロパティ“ドキュメントです。

このドキュメントを见れば,设定できるパラメータおよびその名前を确认することができます。
例えば,先ほど先ほど例にに挙げたの位置ははははは,色はははははであるがわかりわかりわかりことことがわかり

ちなみに,上记の共共のプロパティの中间“objectParameters”というプロパティがあるのです,これをget_paramすることそのブロックのの名をすべてそのとしての取得することができことができすべて构造として取得することができ

lists = get_param('mymodel / gain','objectparameters');

また,各ブロックが固有で持っているパラメータについては”ブロック没有のパラメーター“に一覧があります。

ブロックの検索

さて,set_paramやget_paramではブロックパス指定してパラメータ取得,変更しますがを取得,変更しが,例えば「モデルのの定条件を」ブロックすべてをしたい」」」ようたいたいな场场なな场な指定するのは非常に手间がかかってしまいます。
。

ここで登場するのがfind_systemという关节。

块= find_system(検索対象モデル,パラメータ名,パラメータ値);

という構文で,パラメータが特定の値となっているブロックを検索することができます。

よく検索で使うパラメータとしては,ブロックの种类が设定されている“BlockType”パラメータがあげられます。
例えば,获得ブロックが3つあるモデmyModel2ル”。基金“を考えます。

このモデル上のすべてのゲインをを取得したいたいは,“blocktype”パラメータパラメータがががががにになっててブロックブロック検索すればよい,

>> GainBlocks = find_system('mymodel2','blocktype','gain')

となります。実行結果は,

gainBlocks =
3×1の细胞配列
{'mymodel2 / gain'}
{' myModel2 / Gain1 '}
{' myModel2 / Gain2 '}

セル配列で全てのブロックパスを取得できました。

また,検索条件は複数指定できるので,乗算が“矩阵(K * u)”に設定されているゲインブロックを取得したければ,

>> GainBlocks = Find_System('MyModel','BlockType','Gain','乘法','矩阵(k * u)');

とすれば大厦。

ただし,set_paramやget_paramはブロック1つに対してのみ使使使用可能です。
そのため,もし複数取得したブロックのパラメータを変えたい場合は,

i = 1:长度(gainBlocks)
set_param(GainBlocks {i},'gain','10');
结束

のように,对于ループなどで1つずつつずつしなければませんん。
この部分はグラフィックスオブジェクトの设置や获取と異なるので,注意が必要です。

そのその,検索オプションもいろいろある,详しくは「find_system「│││││││││

ちなみに,直近でクリックしたはわざわざfind_systemをををなくてもGCB.というコマンドで取得することができます。

>> type = get_param(gcb,'blocktype');%直近にクリックしたブロックのタイプを取得

コマンドウィンドウ上行动作を确かめるなどなどに利なな,覚えておきましょう。

コンフィギュレーションパラメーターの変更

ここここまではブロックブロックのパラメータの话でしたがが変更のややた
よく使うのは,モデルのコンフィギュレーションパラメーターの設定を変更する時です。

コンフィギュレーションパラメーターはソルバーやログ,コード生成などモデルに関する様々な設定を行うためのものです。
エディタ上では,「「变化「タブの「「モデル设定设定押す押す,またはctrl + eで开くことができます。

モデルのパラメータにアクセスする場合はブロックパスではなくモデル名を指定します。

>> solver = get_param('mymodel2','solver')% myModel2。基金のソルバー情報を取得

Solver =.
“VariableStepAuto”

現在アクティブになっているモデル名はGCS.というコマンドで取得できます。

>> SolverType = Get_Param(GCS,'levertype');%现处于のモデルのソルバータイプを取得

solverType =
'变量步骤'

「,」,コンフィギュレーションパラメーターでもこれはなになになになに?
コンフィギュレーションパラメーターは複雑なパラメータ名が多いので,積極的に活用していきましょう。

“コード生成“の”コードとアーティファクトのパッケージ化”は“PackageGeneratedCodeAndArtifactsというパラメータ名みたいです
(長い……)

おわりに

今回はset_param,get_paramの使い方向解说解说ました。

本当は应用设计师との連携などについても書こうかと思っていたのですが,APIの使い方だけで結構な量になってしまったのでまた別の機会にしようと思います。

普段仿万博1manbetx真软件を起動するときにしかMATLABを触ってないという方も,これを機にMATLAB仿真软件の連携を試してみてはいかがでしょうか吗?

(おまけ)
コマンドでオブジェクトの位置を変更するって见るとついこんなものを作りたくなります。

|
  • 打印
  • 发送电子邮件

コメント

コメントを残すには,ここをクリックしてMathWorksアカウントにサインインするか新しいMathWorksアカウントを作成します。