2017-07-06 113 views
0

我正在通过Matlab中的循环调用Simulink仿真。我能够发送很多数字参数(例如集成商的初始条件),但是在我的“From File”块中会出现错误。“From File”从Matlab中调用的Simulink块.m文件循环中

我不太确定其他人是如何做到的,但是我在哪里工作,我们通过一个采用结构输入的自制函数发送它。结构的字段是变量名称,字段的值是变量本身。例如:

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

的“预加载”和“位移”变量计算罚款,但filename给出了一个错误:

filename.mat 

有谁知道如果你能传递变量的值filenamefileList{m})在'From File'块中,如果是的话,如何去做。谢谢!

+0

filename用作字符串参数,不作为变量进行计算。你需要做set_param('from_file_block','filename',fileList {m})才能工作。 – Navan

+0

是的,我同意,但是,我们在工作中使用的脚本我不确定这是否可能......虽然好点,谢谢。 @Navan –

回答

1

回答我自己的问题!

我使用Simulink“从工作区”块而不是“从文件”。

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我的功能。