2017-07-06 4 views
0

私はMatlabのループを使ってSimulinkシミュレーションを呼び出しています。私は多くの数値パラメータ(例えば積分器の初期条件)を送ることができますが、 "From File"ブロックにエラーが発生します。"ファイルから"ループ内のMatlab .mファイルから呼び出されたSimulinkブロック

私は他の人たちのやり方はあまりよく分かりませんが、私が働いているところでは構造入力を行う自宅の機能を使って送信します。構造体のフィールドは変数名であり、フィールドの値は変数そのものです。例えば:

pb = struct('preload',preload(pl_index),... 
      'displacement',preload_displacement(pl_index),... 
      'filename',fileList{m}); 

「プリロード」と「変位」変数が細かい評価が、filenameはエラーを与える:

filename.mat 

あなたが変数の値を渡すことができれば、誰でもを知っています'From File'ブロック内にfilenamefileList{m})を追加し、そうであればする方法。ありがとう!

+0

filenameは文字列パラメータとして使用され、変数として評価されません。これが機能するには、set_param( 'from_file_block'、 'filename'、fileList {m})を実行する必要があります。 – Navan

+0

はい私はそれが可能であるかどうかわからない職場で使用しているスクリプトでは、私は同意する...良い点、ありがとう。 @Navan –

答えて

1

自分の質問に答える!

"From File"の代わりにSimulink "From Workspace"ブロックを使用しました。

f = load(fileList{m}); 
fnames = fieldnames(f); 
% The files were arranged weird, so I have one field inside the structures... and they all had different names. 
    switch fnames{1} 
     case 'first' 
      filedata = f.first; 
     case 'second' 
      filedata = f.second; 
     case 'third' 
      filedata = f.third; 
     case 'fourth' 
      filedata = f.fourth; 
    end 
    t = filedata(1,:); 
    u = filedata(2,:); 

loaded_file = timeseries(u,t); 

そして私は私の関数にloaded_fileを渡します。

関連する問題