モデルワークスペースへの変数の入力とその変数のモデルへの出力
8 views (last 30 days)
Show older comments
Simulinkモデルワークスペースへ下記の文で変数を入力し、Simulinkへ「From Workspace」というブロックパラメータを使って入力しています
open_system('seniorCar1215ga')%Simulinkのモデル名
mdlWks = get_param('seniorCar1215ga','ModelWorkspace');
assignin(mdlWks,'qall',q) %qallという名前の変数としてqを代入
qは1行16列の配列です
モデルではqallから16個の値が入力されるはずですが、「From Workspace」からモデルへ入力されている配列は15個しか値がないです
何が問題なのか分からず困っています
0 Comments
Accepted Answer
Hiroumi Mita
on 8 Jan 2020
From Workspaceの仕様として、配列の時系列データを
From Workspaceから出力させるには
例えば、時間ベクトルt, データy1,y2としますと時間ベクトルtは昇順でなくてはいけません。
また時間ベクトルは時系列データの一番左端に縦ベクトルで並びます。
たまたま、昇順のデータが一番左にあり、運よくエラーが出ない状態かもしれません。
例えば、添付では、3個縦ベクトルが並ぶ配列をFrom Workspaceに次のように
設定しますと、出力は、時間ベクトルtに対応する2出力になります。
[t y1 y2] <-3個の縦ベクトル
出力は2個
More Answers (1)
Hiroumi Mita
on 8 Jan 2020
ご質問1
>1×nの行列形式でもFromWorkspaceで入力可能ととらえて良いでしょうか
回答
この設定でもエラーは出ないですが、無意味です。
理由は、FromWorkspaceは任意の時系列データ、例えば実際の時系列実験データやMATLABで作成した時系列データなど
をSimulink内に入力させるために使います。時系列データなので、時間変動があります。ある定時間での値ではなく、時間とペアの物理量でないと時間変化は表現できません。この時間ベクトルはSimulinkのモデルが動くシミュレーション時間と考えます。
多分、これはご質問2と関連した苦肉の策では?と思いますが、Simulinkでワークスペース変数を定数として使うのは
Constant Blcokを使えば大丈夫です。
ご質問2
>あとこれは疑問なのですが、モデルワークスペースからsimulink内に定数の値を入力する方法はFromWorkspace以外にあ>りますか?時系列で入力したいわけではなくモデル内で定数として使いたい
See Also
Categories
Find more on Simulink Function in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!