Loop and element-by-element operation on table

2 次查看(过去 30 天)
Hello, I want to do element-by-element calculation on three tables, but I have two problems 1. with setting the loop correctly and 2. error on inner matrix dimension must agree. I will appreciate help to get my code working. Thanks.
% read constants
T0 = 0; % temperature at the surface
Tm = 1300; % temperature at base of plate
k = 0.000001; % contant
alpha = 0.0000255; % constant
rhom = 3300; % density of the lithophere
L = 95; % 0:5:120;
% read table data
h = load('t.txt');
t = load('a.txt');
rho = load('sf.txt');
% compute T iteratively
for h=1:20
for t=1:20;
for rho=1:20;
a = (exp((-k*pi^2*t)./(L^2))*(sin((pi*h)./L)))+(0.5*exp((-k*4*(pi^2)*t)./(L^2))*(sin((2*pi*h)./L)))
b = (h./L)+(2/pi)*a; % first part
T = T0 + (Tm - T0)*(d); % main equation
rho_t = alpha*rhom (Tm - T); % density calculation
rho = rho_g - rho_t; % density difference
end
end
end
fid = fopen('out.dat','w');
fprint(fid,'%6.10f %6.10f 6.10f\n', T, rho_t, rho);
fclose(fid);
  4 个评论
Jan
Jan 2018-5-31
编辑:Jan 2018-5-31
Please post the complete error message. This is more efficient than guessing, which line causes the problem.
By the way: I do not see any tables in the code. Do you mean matrices? What is the contents of the loaded files? You overwrite the a,b,T, tho_t, rho in each iteration. In consequence you get one number from the last iteration only. Is this wanted? Seems to be a waste of time.
Ope
Ope 2018-6-1
Thanks Jan. I have attached 't.txt'. It is a single column matrix which is similar in content structure to a.txt, and sf.txt. I use it for testing the code.

请先登录,再进行评论。

采纳的回答

Paridhi Yadav
Paridhi Yadav 2018-5-31
Hey, you have first loaded the values from text file in h, t and rho and then you have assigned them the value 1,2,3...20 so these variable now don't have the value you initially assigned them instead now they are a array of 1 to 20. And you are using 'd' which is not declared anywhere.
  5 个评论
Paridhi Yadav
Paridhi Yadav 2018-6-1
编辑:Paridhi Yadav 2018-6-1
Hey, you are only getting the value from last loop in T,rho_t and rho. Instead before running loop make a array of 20 for T, rho_t and rho. And use index i to store value in them just like we did to get the value of h and t.
T(i) = T0 + (Tm - T0)*(b); % main equation
rho_t(i) = alpha*rhom (Tm - T(i)); % density calculation
rho(i) = rho_g - rho_t; % density difference

请先登录,再进行评论。

更多回答(0 个)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by