2016-11-01 20 views
1

%% mathworkドキュメントのコード: %%% 'from file'と 'to fileブロック。simulink(matlab)の 'from file'と 'to file'ブロックを使用して適切な出力が得られません

t = (0:10); 
d= [1  1  1  0  1  1  0  1  0  1  1]; 
x = [t;d]; 
ts = timeseries(x(2:end,:),x(1,:)); 
save('mysignal','ts','-v7.3'); 

私がイメージどおりのSimulinkを実行するには、load and get the matfile back

Simulinkはエラーなしで実行されますが、私はdata_op_mat.matをロードすると、私は

data_op_mat.mat出力ファイル内の同じデータを取得していない午前添付しましたそれは、nを有し、入力信号がどのように見えるかを定義するために純粋に使用される入力データの次の

K>> load('data_op_mat.mat') 
K>> ans 
    timeseries 

    Common Properties: 
      Name: '' 
      Time: [51x1 double] 
     TimeInfo: [1x1 tsdata.timemetadata] 
      Data: [51x1 double] 
     DataInfo: [1x1 tsdata.datametadata] 

答えて

0

時間ベクトルを与えますSimulinkソルバがどのように動作するかに影響します。特に、Simulinkモデルがとる時間ステップには影響しません。

出力時間ベクトルには51要素があります。 デフォルトの開始時間(0秒)、デフォルトの停止時間(10秒)、デフォルトソルバー(可変ステップ、ode45)、およびソルバーのデフォルトの最大ステップサイズ(自動)を使用してモデルを実行していることを示します。 自動手段は、最大ステップサイズ(停止時間 - 開始時間)/ 50 = 0.2をとります。

あなたのモデルにはソルバーができるだけ大きな時間ステップを取ることができないので、ステップが0.2秒になるたびに何もありません。 0から10まで、0.2のステップサイズで、51のタイムステップが得られます。これはあなたが持っているものです。

出力系列をプロットすると、その時点での入力データの単なる補間であることがわかります。

+0

ありがとうございました。サイズ(1 * 11)の入力と同じ出力を得るために、何をすべきかを正確に知ることができますか?あなたは詳細を教えてください。 @Phil Goddard? –

+0

この特定のケースで最も簡単なことは、To Workspaceブロックを開き、サンプル時間を '1'に変更することです。しかし、それはあなたがより大きい/もっと複雑なモデルを使ってやりたいことではないでしょう。 –

+0

あなたが言ったように、私はこれを "from workspace"ブロックと "to workspace"ブロックで行うことができます。しかし、.matファイルは私にとってはより便利です。なぜ私は "From file"から試していますか?いくつかの方法があるはずです。どんなサイズの入力に対しても、私は常に出力ベクトルを51要素として得ています。 –

関連する問題