You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matlab循环求解热流方程并存储Tw1、Tw2数组问题

解决Matlab循环中批量存储Tw1、Tw2结果的问题

问题根源

原代码未预先初始化存储数组,且未将每次循环计算的Tw1/Tw2结果按循环索引存入数组,导致每次循环的结果被覆盖,最终仅保留最后一次计算的单个值。

修正方案

  1. 预先初始化数组:在循环外创建与输入序列长度匹配的数组,用于存储每次循环的Tw1、Tw2及制冷负荷结果。
  2. 按循环索引存储结果:使用循环变量j作为数组索引,将符号变量转成数值后存入对应位置。
  3. 修正制冷负荷的存储逻辑:避免每次循环覆盖结果数组,改为按索引追加。

修正后的完整代码

% 预先初始化存储数组,长度与Tsol_N一致(j从2开始,索引对应)
Tw1_results = zeros(size(Tsol_N));
Tw2_results = zeros(size(Tsol_N));
overall_cooling_load_results = zeros(size(Tsol_N));

for j = 2:numel(Tsol_N)
    i = Tsol_N(j);
    % 定义热流方程组
    eqns_N = [H*AN*L*(i-Tw1) == k*AN*(Tw1-Tw2), k*AN*(Tw1-Tw2) == H1*AN*L*(Tw2-T2)];
    % 求解方程组
    S_N = solve(eqns_N, [Tw1 Tw2], 'Real', true);
    % 将符号结果转为数值,存入对应索引的数组
    Tw1_results(j) = double(S_N.Tw1);
    Tw2_results(j) = double(S_N.Tw2);
    % 计算并存储制冷负荷
    overall_cooling_load = H*AN*(S_N.Tw2 - T2);
    overall_cooling_load_results(j) = double(overall_cooling_load);
end

% 若不需要j=1的空值,可截取有效部分
Tw1_results = Tw1_results(2:end);
Tw2_results = Tw2_results(2:end);
overall_cooling_load_results = overall_cooling_load_results(2:end);

关键说明

  • 初始化数组时用zeros(size(Tsol_N))确保长度匹配,避免动态扩容影响效率。
  • 使用循环变量j作为索引,确保每次计算的结果存入数组的对应位置,不会被后续循环覆盖。
  • 最后可根据需求截取2:end的有效结果,去掉j=1的初始0值。

内容的提问来源于stack exchange,提问作者Chacko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 05:54:38