如何使用单元阵列作为块参数在仿真软件中使用setBlockParameter吗?万博1manbetx

11视图(30天)
我很抱歉如果这之前回答,但我找不到任何东西。我可以使用错误的措辞来搜索。
我有一个版本的EV模型例子与MATLAB的2022 b版本。我有自己的驱动周期,我想运行。我有那些开车周期单元阵列的工作区。如果我运行使用按钮模拟命令每循环一次,但是如果我在for循环中使用sim命令我得到一个错误。
这是我目前正在做的事情:
load_system (“EVModel”);
param1 = CycleCell {1};
set_param (“EVModel /驱动周期源”,“cycleVar”,工作空间变量的);
set_param (“EVModel /驱动周期源”,“wsVar”,“param1”);
simOut = sim卡(“EVModel”);
代码没问题,但问题是,我有一个几百周期运行所以我想用一个循环。
这是我尝试:
模型=“EVModel”;
load_system(模型);
思敏(1:长度(CycleCell)) = Simulin万博1manbetxk.SimulationInput(模型);
i = 1:长度(CycleCell)
param = CycleCell {};
思敏(i) =思敏(我).setBlockParameter (“EVModel /驱动周期源”,“cycleVar”,工作空间变量的);
思敏(i) =思敏(我).setBlockParameter (“EVModel /驱动周期源”,“wsVar”,“参数”);
结束
simOut = parsim(思);
这个代码我越来越错误:“警告:一个或多个模拟完成与错误。有关更多信息,检查
在这些指标:SimulationOutput对象”。
和SimulationOutput对象:“错误' < a href = " matlab: open_and_hilite_hyperlink (“EVModel /驱动周期源”,“错误”)" < / > > EVModel /驱动循环来源”:未能评估面具初始化命令。引起的:点索引不支持这种类型的变量。”万博1manbetx
我找不到我做错了什么。如果这是可能的,一定是我失踪。另外,我有并行计算工具。
任何想法是什么错了吗?

接受的答案

保罗
保罗 2023年3月17日
编辑:保罗 2023年3月17日
嗨David-ucr,
我没有2022 b和2022年找不到EVModel,所以不能测试。我也找不到它 在2022 b模型示例页面万博1manbetx ,也许有具体blockset ?
我认为问题在于 parsim 基本上运行的每个实例模拟每个工人在自己的小世界,也没有在工作区中名为“参数”的变量的小世界。相比之下,当您运行一个模拟代码,发现变量param1仿真软件的基本工作空间。万博1manbetx
工作流已经定义和假设的每个元素CycleCell标量数字(再一次,我不能检查,因为我没有EVModel),解决方案,我认为,是改变第二个思敏的任务:
思敏(i) =思敏(我).setBlockParameter (“EVModel /驱动周期源”,“wsVar”num2str (CycleCell {2}));
它将每个参数的值。
或者,使用 setVariable
param = CycleCell {};
思敏(i) =思敏(我).setBlockParameter (“EVModel /驱动周期源”,“cycleVar”,工作空间变量的);
思敏(i) =思敏(我).setBlockParameter (“EVModel /驱动周期源”,“wsVar”,“参数”);
思敏(i) =思敏(我).setVariable (“参数”参数,“工作区”模型);
或者,如果每个元素的CycleCell不是一个标量值,那么也许这将工作
思敏(i) =思敏(我).setBlockParameter (“EVModel /驱动周期源”,“wsVar”,(“CycleCell {”int2str (ii),“}”]);
parsim 命令将
simOut = parsim(思敏,“TransferBaseWorkspaceVariables”,“上”);
这将转移CycleCell,和其他基本工作空间变量!,to the little world of each worker, so that the block parameter CycleCell{1}, etc. can be evaluated in each simulation.
如果这些是可以接受的,请提供更多的洞察CycleCell中,并链接到2022 b EVModel文档页面。
6个评论
David-ucr
David-ucr 2023年3月18日
@Paul 这就是答案!它工作!谢谢你!所有我能想到的检查,以确保它是工作签出。

登录置评。

更多的答案(0)

类别

找到更多的在运行多个模拟帮助中心文件交换

s manbetx 845


释放

R2022b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!