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

9 views (last 30 days)
simulink上のMATLAB Functionでつくった列ベクトルをMATRAB Function上で時系列データ(波形データ)に変換したいです.コマンドウィンドウではtimeseriesというコマンドで時系列データに変換できましたが,MATLAB Functionではそのコマンドが使用できなかったため,他に方法がないか教えていただきたいです.

Accepted Answer

Tohru Kikawada
Tohru Kikawada on 24 Jan 2017
ご質問される場合には こちら にしたがって、投稿いただけますとより的確な回答が得られます。
もう少し具体的にやりたいことをご説明いただけますでしょうか。
  • どのような処理を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 Comments
Kazunori Hase
Kazunori Hase on 24 Jan 2017
ご回答ありがとうございます.また,質問の仕方が稚拙で申し訳ありません.ご回答の内容,改めて確認し,適宜またご返答させていただきます.取り急ぎ御礼のみ.
Kazunori Hase
Kazunori Hase on 26 Jan 2017
先にご紹介いただい方法でこちら側の問題は解決できました. ご指摘の通り,私共で実行したいことは,MATLAB Functionブロックから生成された列ベクトルを,Simulinkの時系列信号として1サンプルずつ出力したい,ということでした.Unbufferブロックのことは知りませんでした.大変勉強になりました.ありがとうございました.

Sign in to comment.

More Answers (0)

Categories

Find more on Startup and Shutdown 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!