【问题标题】:"From File" Simulink block called from Matlab .m file in loop循环中从 Matlab .m 文件调用的“来自文件”Simulink 模块
【发布时间】:2017-07-06 11:54:54
【问题描述】:

我通过 Matlab 中的循环调用 Simulink 仿真。我可以发送许多数值参数(例如积分器的初始条件),但在我的“来自文件”块中出现错误。

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

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

'preload' 和 'displacement' 变量评估良好,但 filename 给出错误:

filename.mat

有谁知道是否可以在“来自文件”块中传递变量filename (fileList{m}) 的值,如果可以,如何做强>。谢谢!

【问题讨论】:

  • 文件名用作字符串参数,不作为变量进行评估。您需要执行 set_param('from_file_block','filename',fileList{m}) 才能使其正常工作。
  • 是的,我同意,但是对于我们在工作中使用的脚本,我不确定这是否可行……不过,很好,谢谢。 @Navan

标签: matlab simulink


【解决方案1】:

回答我自己的问题!

我使用了 Simulink“From Workspace”模块而不是“From File”。

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 传递给我的函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多