如何在Matlab中按列运行矩阵列?
问题描述:
我正在运行一个嵌套for循环的矩阵。我的问题在于,这些值出错了,因为循环会逐行填充矩阵。我想让循环按列填充矩阵,以避免此问题。如何在Matlab中按列运行矩阵列?
T_i = 85; %Initial temperature (K)
T_inf = 20; %Free stream temperature (K)
h = 50; %Convection heat transfer coefficient (W/m^2K)
alp = 0.0000015; %Thermal diffusivity (m^2/s)
k = 15; %Thermal conductivity (W/mK)
del_x = 0.03; %Incremental distance between center nodes (m)
del_t = 300; %Incremental time diference (s)
Fo = alp*del_t/(del_x^2) %Find the Numerical/Discretized Fourier Number
Bi = h*del_x/k %Find the Numerical/Discretized Biot Number
T__vec = [85;85;85;85] %Initial temperature vector for 4 node points.
%T_inf_vec = 20+zeros(1:10)
M=5 %No. of rows
N=10 %No. of columns
T_inf_vec = [20,20,20,20,20,20,20,20,20,20]
A=zeros(M,N);
A(1:4)= T__vec;
A = [T_inf_vec;A];
for i=2:M
for j=2:N
T_p1=(2*Fo*A(i+1,j-1))+(2*Bi*Fo*A(i-1,j-1))+(((1-2*Fo)-(2*Bi*Fo))*A(i,j-1))
T_p11 = Fo*A(i-1,j-1)-2*Fo*A(i,j-1)+A(i,j-1)+Fo*A(i+1,j-1);
if i==2
A(i,j)= T_p1
elseif i<1
A(i,j)= 20
else
A(i,j)= T_p11
end
end
end
答
更改为通过循环:
for j=2:M
for i=2:N
T_p1=(2*Fo*A(i+1,j-1))+(2*Bi*Fo*A(i-1,j-1))+(((1-2*Fo)-(2*Bi*Fo))*A(i,j-1))
T_p11 = Fo*A(i-1,j-1)-2*Fo*A(i,j-1)+A(i,j-1)+Fo*A(i+1,j-1);
if i==2
A(i,j)= T_p1
elseif i<1
A(i,j)= 20
else
A(i,j)= T_p11
end
end
end
请仔细阅读[在什么情况下我想补充“紧急”或其他类似的短语我的问题,为了获得更快的答案?](// meta.stackoverflow.com/q/326569) - 总结是,这不是解决志愿者问题的理想方式,而且可能会对获得答案产生反作用。请不要将这添加到您的问题。 – halfer