simulink上のMATLAB Functionでつ​くった列ベクトルをM​ATRAB Function上で​時系列データ(波形デ​ータ)に変換したい

2 ビュー (過去 30 日間)
Kazunori Hase
Kazunori Hase 2017 年 1 月 23 日
コメント済み: Kazunori Hase 2017 年 1 月 26 日
simulink上のMATLAB Functionでつくった列ベクトルをMATRAB Function上で時系列データ(波形データ)に変換したいです.コマンドウィンドウではtimeseriesというコマンドで時系列データに変換できましたが,MATLAB Functionではそのコマンドが使用できなかったため,他に方法がないか教えていただきたいです.

採用された回答

Tohru Kikawada
Tohru Kikawada 2017 年 1 月 24 日
ご質問される場合には こちら にしたがって、投稿いただけますとより的確な回答が得られます。
もう少し具体的にやりたいことをご説明いただけますでしょうか。
  • どのような処理をMATLAB Functionブロックで実行しているか
  • 入力はどのような信号で、出力はどのような列ベクトルなのか
  • シミュレーション完了後に時系列データに変換するのか、それともシミュレーション中に逐次時系列データに変換するのか
  • 変換した時系列データはどこに出力するのか (MATLAB Functionブロックから出力し、後段ブロックに伝達するか or ワークスペースに保存したいのか)
たとえば、「MATLAB Functionブロックから生成された列ベクトル(100x1)を、Simulinkの時系列信号して1サンプルずつ出力したい」ということでしたら下記の方法になります。
DSP System ToolboxのUnbufferブロックを使って100要素の列ベクトルを1サンプルに分解して出力しています。Unbufferブロック前後でサンプル時間が調整されていることに注意してください。
Simulinkモデル:
MATLAB Functionブロックのコード:
function y = mySignalGenerator(gain)
y = randn(100,1)*gain; % 入力データ1個に対して100個のデータを出力
出力信号:
%
  2 件のコメント
Kazunori Hase
Kazunori Hase 2017 年 1 月 24 日
ご回答ありがとうございます.また,質問の仕方が稚拙で申し訳ありません.ご回答の内容,改めて確認し,適宜またご返答させていただきます.取り急ぎ御礼のみ.
Kazunori Hase
Kazunori Hase 2017 年 1 月 26 日
先にご紹介いただい方法でこちら側の問題は解決できました. ご指摘の通り,私共で実行したいことは,MATLAB Functionブロックから生成された列ベクトルを,Simulinkの時系列信号として1サンプルずつ出力したい,ということでした.Unbufferブロックのことは知りませんでした.大変勉強になりました.ありがとうございました.

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeStartup and Shutdown についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by