- zeros (and other similar functions) wants the dimensions of the array or matrix. Please, check the documentation about it
- then, when you calculate T1 I think you use K1 instead of K
- sum is a built-in function witch calculate the sum of the elements of array or matrix. In general, never use as a variable name a function
Saving data calculated for each temperature with varying time interval
3 次查看(过去 30 天)
显示 更早的评论
I want to save my data for each temperature where equation is summation of n term and need to solve it by varying time.
I have written this but it is not working for temp variation to store data
Z=zeros(0,1500);
tot= zeros(0,4);
for kk=300:50:450 % temperature variation
K1=12e-10*exp(-6e4/(4*kk)); % temperature dependent term
for ii=1:1500 % time variation
sum=0;
for jj=1:1000; %n= summation term
T1=(1/jj^2*exp(-K*jj^2*ii*3.2^2));
sum=sum+T1;
end
sumtot=1-4/11*sum;
Z(ii) =sumtot;
end
end
I need output saved as array for each temperature it should store time vs summation term (Z)
0 个评论
采纳的回答
Edoardo Mattia Piccio
2023-5-25
Hi Sudhir, let's analyze your code:
With this changes, the code runs but it doesn't calculate right values. Maybe formulas contain errors, please let me know after check them.
tempVariation= 300:50:450; numbOfTemp= length(tempVariation); % temperature variation
Z=zeros(1,1500); % not zeros(0,1500)
tot= zeros(numbOfTemp,1500);
for kk= 1:numbOfTemp
K1=12e-10*exp(-6e4/(4*kk)); % temperature dependent term
for ii=1:1500 % time variation
S=0;
for jj=1:1000 % n= summation term
T1=(1/jj^2*exp(-K1*jj^2*ii*3.2^2));
S=S+T1;
end
sumtot=1-4/11*S;
Z(ii) =sumtot;
end
tot(kk,:)= Z; % store results in a matrix
end
tot
Moreover, instead of for loops, you can try to use array operations. Here there is an example for your code:
tempVariation= 300:50:450; numbOfTemp= length(tempVariation); % temperature variation
Z= zeros(1,1500); nTerm= 1:1000;
tot= zeros(numbOfTemp,1500);
for kk= 1:numbOfTemp
K1=12e-10*exp(-6e4/(4*tempVariation(kk))); % temperature dependent term
for ii= 1:1500
Z(ii)=sum((1./nTerm.^2).*exp(-K1.*nTerm.^2.*ii.*3.2^2));
end
tot(kk,:)= 1-4*Z/11;
end
tot
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Number Theory 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!