While taking large range error is occur. How to solve this problem?
Show older comments
My code is as below:
f=1:1000:1000000000;
t1=1/0.4521;
t2=1/0.4908;
t3=1/0.61;
t4=1/1;
for i=1:1000:1000000000
z1(i)=(3.68*10^(-7)*(t1)^(1/2)*(2*3.14*f(i))^0.5);
z2(i)=(3.68*10^(-7)*(t2)^(1/2)*(2*3.14*f(i))^0.5);
z3(i)=(3.68*10^(-7)*(t3)^(1/2)*(2*3.14*f(i))^0.5);
z4(i)=(3.68*10^(-7)*(t4)^(1/2)*(2*3.14*f(i))^0.5);
end
loglog(f,z1,'r',f,z2,'b',f,z3,'g',f,z4,'k');
xlabel('Frequency in Hz');
ylabel('Impedance in ohm');
Error is as below:
Error in ==> he_impe at 3
f=1:1000000000;
??? Attempted to access f(1e+006); index out of bounds because
numel(f)=1000000.
Error in ==> he_impe at 9
z1(i)=(3.68*10^(-7)*(t1)^(1/2)*(2*3.14*f(i))^0.5);
1 Comment
Jan
on 28 Apr 2012
"3.68*10^(-7)" is processed much more efficient by "3.68e-7". SQRT is much faster than "^(1/2)".
Accepted Answer
More Answers (1)
Jan
on 28 Apr 2012
You can replace the loop:
z1 = 3.68e-7 * sqrt(t1 * 2 * 3.14 * f);
z2 = 3.68e-7 * sqrt(t2 * 2 * 3.14 * f);
z3 = 3.68e-7 * sqrt(t3 * 2 * 3.14 * f);
z4 = 3.68e-7 * sqrt(t4 * 2 * 3.14 * f);
1 Comment
Isha Deshpande
on 28 Apr 2012
Categories
Find more on Matrix Indexing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!