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

7 ビュー (過去 30 日間)
yokoyama
yokoyama 2020 年 1 月 8 日
コメント済み: yokoyama 2020 年 1 月 8 日
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個しか値がないです
何が問題なのか分からず困っています

採用された回答

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

サインインしてコメントする。

その他の回答 (1 件)

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

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeSimulink Function についてさらに検索

製品


リリース

R2018a

Community Treasure Hunt

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

Start Hunting!