金宝appSimulink中の「ワークスペース」についてざっくり解说!
皆様,あけましておめでとうございます!
少年も我々matlabユーザーユーザーコミュニティメンバーはは绍介やユーザーの绍介绍介様々な情情をしていきたいとますのでのでのでのでのでので,2021年もどうお愿いいたしますお愿いいたしますので
ということで,2021年1発目の记事を担当することになりました,トレーニングエンジニアの远藤と申します。去年は「Sim金宝appulink中とMATLABをつなぐ」をコンセプトとしていくつか技术的な记事を书いてきましたので,今回もその流れで技术的な记事を书いていきたいと思います。
具体的には,金宝appSimulink的MATLABとを连携させるうえでしばしば问题になる「ワークスペース」についてのお话になります。
ちょっとニッチな内容ではありますが,特に以下のような方はワークスペース关系の问题に直面しやすいので,ぜひ参考にしていただければと思います。
- モデル内で使用しているパラメータ変数が多いため,Mスクリプトや.MATファイルファイルを使ってパラメータを管管している
- コンポーネントごとにモデルを作成し,最后にモデル同士を结合することを考えている方
- App Designerなどを使っていて,MATLAB关数の中でモデルのシミュレーションを行う必要のある方
ワークスペースとは?
金宝appsimulinkをメインで使っいるいるの中间にワークスペースのことをよく知らない,という方针いらっしゃると思いので,本题に前に「ワークスペースとは何か」」ワークます「そんなこと知ってるよ!「││方向│││││飞翔││││飞翔。
ワークスペースとはMATLAB上で作成された変数が格纳される场所です。例えばMATLABのコマンドウィンドウで
>> X = 10
と実行するするmatlab上の「ワークスペース「││││││││││││├
このMATLAB上に表示されているワークスペースはベースワークスペースと呼ばれます.mスクリプトやコマンドウィンドウで定义したたは全てベースワークスペース格式され,それらから自由れできでき。
しかし,MATLAB关数の中で作成した変数についてはベースワークスペースに格纳されず,その关数用の一时的なワークスペースに保存されます。
この一时的なワークスペースを关数ワークスペースと呼びます.matlab关节相关数目ワークスペーススペーススペースにないないないないないない,MATLAB关数内からベースワークスペース上の変数を参照することはできません。また,关数ワークスペースは一时的なものですので,その关数の実行が终わると格纳されていた変数はすべて削除されます。
ワークスペースについてはこちらのドキュメントにも详细が记载されていますので,合わせてご确认いただければと思います。
金宝appSimulinkとワークスペースの关联
上述し通道,mスクリプトややはベースワークスペース,matlab关键词専専アクセスすることができワークスペーススペースにすることができことができことができは金宝appはますはははははののモデルはワークスペースにアクセスするすることができるのでしょうかかかか?
何も特别な操作を行わない场合,金宝appSimulink中のモデルはベースワークスペースに自动でアクセスします。ゲインブロックのゲイン値に変数を设定し,その値をMATLABのスクリプトで定义しておく,といったことができるのも,金宝appSimulink中がベースワークスペースの変数を自动で参照してくれているからです。
逆に言うと,金宝appsimulinkのモデルはそのでは关键词スペースのにアクセスことことできません。关键词中でsim - を使ってを実しと」たられいませ」」」というエラー出てきてしまっ,という経験したことがあることがあるものではないのではないことがあることがある还是
金宝appSimulink的とワークスペースに关する主要なトラブル
上游ののはm金宝appatlabのベースワークスペースの変を,ベースワークベースワーク参照しくれます,ベースワークベースワークに参照てくれ,ベースワークスペースににをますしば,多重の场问题生长ばはありませ问题生效。
。
【ケース1】
甲さんと乙さんは,共同でモデルの开発をしています.Bさんは自分が担当している箇所のモデルを作成し终えたので,必要なパラメーターのデータファイルとセットで甲さんに渡しました。早速甲さんはそれをモデル参照で自分のモデルに统合すると,Bさんからもらったデータファイルを読み込んでシミュレーションを実行しました。
しかし,シミュレーションシミュレーション思い通道のににませんんにを调查てみた,いつの间にかモデル内でしいるいるk値値书籍てこと気づきました実は気づきました。モデルの中でももkた,データファイルをれときにためされてしまったのです场所kれいろいろな场所でk使てしのでのでk kてのでのでので,所以名称をなると大厦です。どうすれば2つのモデルの同じでしょ値を使い使いでしょうか?
【ケース2】
aさんさん,モデルをシミュレーションするためのをは,モデルが关键ワークののを参照できないこと知ってたためassignin关关を用力てモデルでされれいるいるkに
しかし,后日阿さんの开発した关数を使った乙さんから「シミュレーションしたらワークスペース上の解析结果が胜手に上书きされた」とクレームが来ました.Bさんはシミュレーションの入力信号を作成するためにMATLAB侧でデータ解析を行っており,そこでķという変数を使っていたのです。どうすればベースワークスペース上の変数の上书きを防ぐことができるでしょうか?
ケース1の対处法:モデルワークスペースを利用して変数のバッティングを防ぐ
ケース1の问题は,2つのモデルがどちらもスペースを参照してことありありますますにあります。ベースワークスペース上にます名称ののを复のでておくはません,2つのんベースワークスペースを参照ているはれてしまいますがさ言うとます逆逆言う言うと别々ワークを参照してくれればワーク参照してばばしくれればばてててであっであっててててててててててててててててててててて使ててをを使使てを使用するするます。
そこで登场するのが モデルワークスペース です。モデルワークスペースとは、モデルごとに専用に用意されているワークスペースのことで、各モデルからしか参照することができません。そのため、そのモデル内でしか使わない変数を格纳する际に便利なワークスペースととます。
モデルワークスペースはs金宝appimulinkの「モデルエクスプローラー“から确认することができます.金宝appsimulinkエディタエディタの「モデルモデルモデルから「「モデルエクスプローラーエクスプローラーを起するとと起起するすると表示さているモデルがれれますますれますますますますますれモデルますますますますれれますますととくとととととととに模型工作空间ががささわかるかといることがわかると思い。
このモデルワークスペースに,ワークスペースと同様に自由にを格式をおくおくことができますことができことができことができことができことができことができ。新规函数を作物したいことができます。自动加载「のののますのの」ますしますます。自动跳数が作业名称や値,データ型など値,データ型などを。
もしベースワークスペースで既に作成してある変数をモデルワークスペースに移动したい场合は,ドラッグ&ドロップで移动できます。
モデルモデルワークスペースは各各モデルしか参照できない,别别のモデルとのののバッティングを防ぐことができさ。らに,ベースワークスペースよりも优先的ににさため,ベースワークスペース上に同じ名前の変数があってもそちらが参照されることはありません。ケース1の场合は,Bさんが変数ķを自身のモデルのモデルワークスペースに格纳しておけば,甲さんがベースワークスペースで使用している変数ķではなくモデルワークスペース上の変数ķが参照されるため,别々の値を使用することができる,というわけです。
ただし,モデルワークスペースに作成した変数は,他他のモデルからから参照するませませ。もしもし别のモデルでもそのそのの値を使いたいにににおくおく必要がありっににおく必要がありありっにもおく必要必要ありありで他てもおく必要がありでっっておくおく必要が使いありににのおくおく値をどこっその,个人的には基本はベースワークスペースを使怖い怖いはワークを使う,変モデルワークを使う,とというような使いけがかなと思っ使いいけがかなと思っ使いいけ
※パラメータをより详细に管理したい场合
金宝appSimulink的数据字典という机能をと,モデルごとに独立して参照てほしいデータやややので共しほしいほしい群群という形式でまとめまとめすることができますまとめパラメータするます。の多元大规模モデルの开放においては特性有用な机能となってい。
数据字典の概念や使い方向,英语ですが以の动词がわかりやすいので,兴味のある方针
ケース2の対处法:モデルが关数ワークスペースの変数を参照するように设定する
ケース2の问题は,モデルが关键词スペースのをできないことにあります。关键内内で定义した変変をモデル参照参照しくれれくれればモデルスペース参照してくれればモデルスペーススペースししくれればばスペーススペースのの変の上きスペーススペースのませませ
ここここ使用するする,sim有关 srcworkspaceオプションににます。
SIM关数を実行する际は様々なオプションを指定することができますが,このSrcWorkspaceプロパティは「モデルがどのワークスペースを参照するか」を设定できるオプションです。
既定の设定ではこのsrcworkspaceは'基础'に设定されている,关键はスペースのを参照し,关键词スペースワーク参照ん。当前的'に変更することでん。SIM比关节当行さた时にににれているワークスペース参照さようようなりますます。すなわち,米スクリプトやコマンドウィンドウ上で実行された时はベースワークスペース,MATLAB关数内で呼ばれた时は关数ワークスペースが参照されます。
功能myfun.
K = 5;
SIM('基于myModel'那'srcworkspace'那'当前的');%呼び出された场所のワークスペースを参照
结尾
これを使えば,aさんは変数kをわざわざベースワークスペーススペースにするするはなくなりので,bさんの解析をを上书せせに済みます。
ただし,参照先として设定できるワークスペースは1つだけです。关数ワークスペースに作成されている変数はそれを用いる,ない场合はベースワークスペースの変数を用いる,というようなことはできないので注意が必要です。また,关数ワークスペースの変数は关数実行后に消えてしまいますので,后からその変数はどんな値だったのかを确认することができない点も注意が必要です。
※关数内でシミュレーションを実行しなければならない状况
ケース2だけ见ると,「そもそも关数じゃなくてスクリプトでモデルをシミュレーションすればいいんじゃない?」と思う方もいらっしゃるかと思います。确かに,通常モデルをシミュレーションするだけであればわざわざ关数を使用する必要はありません。
しかし,例えばシミュレーションアプリを作用成する合,アプリの动作は关键词记述するするがあるため,但是
そのため,アプリ内でパラメータの値を设定しそれを用いてシミュレーションする场合はこのSrcWorkspaceオプションが非常に重要になってきますので,シミュレーションアプリを作成する人はぜひ覚えておきましょう。
(シミュレーションアプリの作成については,App Designerでsi金宝appmulinkモデルのシミュレーションアプリ作用の记事もご参照ください)
まとめ
今回は的金宝appSimulinkとワークスペースの关系によって生じる主要なトラブルとその対处法ついて解说しました.Simulinkのワークスペースへのアクセスの仕方は少し癖があるので,MATLABのスクリプトや关数と连携させる际に问题が生じやすいです。逆に,金宝appSimulink的が参照する场所を自在に操ることができると,MATLABとの连携だけでなく大规模モデルの管理も效率的に行えるようになりますので,头の片隅に置いておくと意外な场面で役立つかもしれませんよ!
注释
要发表评论,请点击这里登录您的MathWorks帐户或创建新的。