While taking large range error is occur. How to solve this problem?
이전 댓글 표시
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
Jan
2012년 4월 28일
"3.68*10^(-7)" is processed much more efficient by "3.68e-7". SQRT is much faster than "^(1/2)".
채택된 답변
추가 답변 (1개)
Jan
2012년 4월 28일
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);
카테고리
도움말 센터 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!