モデルワークスペース​への変数の入力とその​変数のモデルへの出力

8 views (last 30 days)
yokoyama
yokoyama on 8 Jan 2020
Commented: yokoyama on 8 Jan 2020
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個しか値がないです
何が問題なのか分からず困っています

Accepted Answer

Hiroumi Mita
Hiroumi Mita on 8 Jan 2020
From Workspaceの仕様として、配列の時系列データを
From Workspaceから出力させるには
例えば、時間ベクトルt, データy1,y2としますと時間ベクトルtは昇順でなくてはいけません。
また時間ベクトルは時系列データの一番左端に縦ベクトルで並びます。
たまたま、昇順のデータが一番左にあり、運よくエラーが出ない状態かもしれません。
例えば、添付では、3個縦ベクトルが並ぶ配列をFrom Workspaceに次のように
設定しますと、出力は、時間ベクトルtに対応する2出力になります。
[t y1 y2] <-3個の縦ベクトル
出力は2個
sample.PNG
  1 Comment
yokoyama
yokoyama on 8 Jan 2020
ありがとうございます
FromWorkspaceは一番左の列が時系列の縦ベクトルでなくてはいけないことを理解しました
それを踏まえて質問なのですが、時系列の縦ベクトルが一行で終わっても問題はないでしょうか
つまり1×nの行列形式でもFromWorkspaceで入力可能ととらえて良いでしょうか
あとこれは疑問なのですが、モデルワークスペースからsimulink内に定数の値を入力する方法はFromWorkspace以外にありますか?
時系列で入力したいわけではなくモデル内で定数として使いたいのですが、入力方法が見つからないです

Sign in to comment.

More Answers (1)

Hiroumi Mita
Hiroumi Mita on 8 Jan 2020
ご質問1
>1×nの行列形式でもFromWorkspaceで入力可能ととらえて良いでしょうか
回答
この設定でもエラーは出ないですが、無意味です。
理由は、FromWorkspaceは任意の時系列データ、例えば実際の時系列実験データやMATLABで作成した時系列データなど
をSimulink内に入力させるために使います。時系列データなので、時間変動があります。ある定時間での値ではなく、時間とペアの物理量でないと時間変化は表現できません。この時間ベクトルはSimulinkのモデルが動くシミュレーション時間と考えます。
多分、これはご質問2と関連した苦肉の策では?と思いますが、Simulinkでワークスペース変数を定数として使うのは
Constant Blcokを使えば大丈夫です。
ご質問2
>あとこれは疑問なのですが、モデルワークスペースからsimulink内に定数の値を入力する方法はFromWorkspace以外にあ>りますか?時系列で入力したいわけではなくモデル内で定数として使いたい
  1 Comment
yokoyama
yokoyama on 8 Jan 2020
ありがとうございました

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!