【问题标题】:I need to operate this loop in Matlab我需要在 Matlab 中操作这个循环
【发布时间】:2022-01-08 14:30:52
【问题描述】:
function stainless_steel(~,~,~)
clear,clc
T_i = [0 0 12.5 25 37.5 50 0];
k = 0.0162;
cp = 0.5;
rho = 8000;
dt = 3;
dx = 0.0125;
t = 120;
q = 20000;
    
Fo = (k*dt)/(((dx)^2)*rho*cp);
e_gen = q*(dt)/(rho*cp);
n = t/dt;
p = n;
T = zeros(n,7);
    
for iteration = 1:p
    
    for x = 2:6
     
     T(iteration,x) = [Fo*(T_i(1,x+1)+273.15 + T_i(1,x-1)+273.15) + (T_i(1,x)+273.15)*(1-2*Fo) + e_gen - 273.15];
    end
    
end
T_i = T;
disp(T)
end

结果我得到了这个:

     0   15.9720   27.5000   40.0000   52.5000   60.1400         0
     0   15.9720   27.5000   40.0000   52.5000   60.1400         0
     0   15.9720   27.5000   40.0000   52.5000   60.1400         0
     0   15.9720   27.5000   40.0000   52.5000   60.1400         0
     0   15.9720   27.5000   40.0000   52.5000   60.1400         0
     0   15.9720   27.5000   40.0000   52.5000   60.1400         0
     0   15.9720   27.5000   40.0000   52.5000   60.1400         0
     0   15.9720   27.5000   40.0000   52.5000   60.1400         0
     0   15.9720   27.5000   40.0000   52.5000   60.1400         0
     0   15.9720   27.5000   40.0000   52.5000   60.1400         0
     0   15.9720   27.5000   40.0000   52.5000   60.1400         0
     0   15.9720   27.5000   40.0000   52.5000   60.1400         0
     0   15.9720   27.5000   40.0000   52.5000   60.1400         0
     0   15.9720   27.5000   40.0000   52.5000   60.1400         0
     0   15.9720   27.5000   40.0000   52.5000   60.1400         0
     0   15.9720   27.5000   40.0000   52.5000   60.1400         0
     0   15.9720   27.5000   40.0000   52.5000   60.1400         0
     0   15.9720   27.5000   40.0000   52.5000   60.1400         0
     0   15.9720   27.5000   40.0000   52.5000   60.1400         0
     0   15.9720   27.5000   40.0000   52.5000   60.1400         0
     0   15.9720   27.5000   40.0000   52.5000   60.1400         0
     0   15.9720   27.5000   40.0000   52.5000   60.1400         0
     0   15.9720   27.5000   40.0000   52.5000   60.1400         0
     0   15.9720   27.5000   40.0000   52.5000   60.1400         0
     0   15.9720   27.5000   40.0000   52.5000   60.1400         0
     0   15.9720   27.5000   40.0000   52.5000   60.1400         0
     0   15.9720   27.5000   40.0000   52.5000   60.1400         0
     0   15.9720   27.5000   40.0000   52.5000   60.1400         0
     0   15.9720   27.5000   40.0000   52.5000   60.1400         0
     0   15.9720   27.5000   40.0000   52.5000   60.1400         0
     0   15.9720   27.5000   40.0000   52.5000   60.1400         0
     0   15.9720   27.5000   40.0000   52.5000   60.1400         0
     0   15.9720   27.5000   40.0000   52.5000   60.1400         0
     0   15.9720   27.5000   40.0000   52.5000   60.1400         0
     0   15.9720   27.5000   40.0000   52.5000   60.1400         0
     0   15.9720   27.5000   40.0000   52.5000   60.1400         0
     0   15.9720   27.5000   40.0000   52.5000   60.1400         0
     0   15.9720   27.5000   40.0000   52.5000   60.1400         0
     0   15.9720   27.5000   40.0000   52.5000   60.1400         0
     0   15.9720   27.5000   40.0000   52.5000   60.1400         0

但我需要的是每次都改变的矩阵 T_i。例如,如果一开始的 T_i 是

[0 0 12.5 25 37.5 50 0]

我需要我的第二个 T_i

[0 15.9720 27.5000 40.0000 52.5000 60.1400 0]

这是我从原始 T_i 得到的结果

我的第三个 T_i 是我从第二个 T_i 得到的任何结果,等等 40 次迭代。 但我不知道如何做到这一点:(

【问题讨论】:

  • 你为每一行计算完全相同的东西,因为你的计算不依赖于iteration,并且在你的循环中没有任何其他改变。您可能希望将 T_i = T; 行移到循环内。

标签: matlab loops matrix iteration literate-programming


【解决方案1】:

你可以通过以下几行来解决它:

T_i = zeros(n,7);
T_i(1,:) = [0 0 12.5 25 37.5 50 0];

for iteration = 1:p-1
    
    for x = 2:6
        T_i(iteration+1,x) = [Fo*(T_i(iteration,x+1)+273.15 + T_i(iteration,x-1)+273.15) + (T_i(iteration,x)+273.15)*(1-2*Fo) + e_gen - 273.15];
    end
    
end
    

这可以确保对于矩阵中的每一行,上面一行的信息都用作输入。我将它定义为 T_i 但您可能想要更改它,因为它表明它是初始值。我的例子中的实际初始值为T_i(1,:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-03
    • 2019-06-07
    • 1970-01-01
    • 1970-01-01
    • 2020-03-24
    • 1970-01-01
    • 2017-11-26
    • 2012-01-11
    相关资源
    最近更新 更多