PEMFC建模的批量仿真优化问题

​请问利用Matlab/Simulink如何做出这种图(湿度改为温度),模型已经建好,想用parsim,但是遇到一个问题:目前每一个电流I不能使得温度Tst完成遍历

img


下图是目前的代码,如果知道的请指正一下

img

您好,从您提供的问题描述来看,主要需要解决的是如何用parsim进行批量仿真,使温度Tst能够遍历指定的取值范围。
可以这么考虑:

  1. 在Simulink模型中,将Tst定义为输入端口,这样在外部可以通过修改Tst的值来控制温度。
  2. 使用parsim的for循环,遍历Tst的取值范围,在每次迭代中运行仿真并记录结果。
  3. 最后将所有仿真结果汇总绘制成图。
    具体实现步骤如下:
  4. 在Simulink模型中添加输入端口in,作为温度Tst。
  5. 定义温度范围temps = [10:5:50];
  6. 使用parsim语句:
    for i = 1:length(temps)
    Tst = temps(i);
    simOut = parsim(model,'UseFastRestart','on');
    % 记录仿真结果
    end
  7. 将每次迭代得到的结果汇总后作图。
    通过这样的批量仿真,就可以得到Tst遍历取值范围时的仿真结果。希望这些思路和步骤可以提供一些帮助,也欢迎您针对代码实现提出进一步的问题。

你的代码在对电流I进行遍历时,没有对温度Tst进行遍历,这是导致无法通过改变电流I来遍历温度Tst的问题所在。

你可以将遍历温度Tst的代码放在电流I的循环内部,这样就可以同时遍历两个变量了。下面是修改后的代码示例:

% 初始化电流范围
I_min = 0.5;
I_max = 2.5;
I_step = 0.1;
I_values = I_min:I_step:I_max;

% 初始化温度范围
Tst_min = 20;
Tst_max = 80;
Tst_step = 10;
Tst_values = Tst_min:Tst_step:Tst_max;

% 设置参数
param1 = 0.5;
param2 = 1.2;

% 循环遍历所有电流值和温度值
for i = 1:numel(I_values)
    I = I_values(i); % 获取当前电流值

    for j = 1:numel(Tst_values)
        Tst = Tst_values(j); % 获取当前温度值

        % 调用模型函数进行仿真
        result = myModel(I, Tst, param1, param2);

        % 处理仿真结果
        % ...
    end
end

function result = myModel(I, Tst, param1, param2)
    % 模型代码
    % ...
    result = output;
end

这样,你就可以通过改变电流I来遍历温度Tst的所有取值了。希望能对你有所帮助!