Accessing empty array element through a loop
Mostrar comentarios más antiguos
I have following program
r = 0;
syms x y z
Base = x*y*z;
for j = 1:8
r = r+1;
X(r) = j;
x = X(r);
AN = eval(Base);
Base1(r) = AN;
end
First_Int = (Base1(1,1)+ 4*Base1(1,2)+ 2*Base1(1,3) + 4*Base1(1,4)+ 2*Base1(1,5)+ 4*Base1(1,6)+ 2*Base1(1,7)+ 4*Base1(1,8)+Base1(1,9))/(3);
It is clear that array size is increasing dynamically and consume much time. There will be two other loops for y and z to complete the calculation with values.
Can I have an alternative way of doing this to save time and memory?
Respuestas (1)
Geoff Hayes
el 21 de Feb. de 2016
Harsha - I'm not clear on how your question title accessing empty array element relates to your code. Where are you trying to access an empty element?
If you are concerned with the array size increasing dynamically on each iteration of the loop, then pre-allocate or size the array before entering the loop as
n = 8;
X = zeros(n,1);
Base1 = zeros(n,1);
for k=1:n
X(k) = k;
Base1(k) = k*y*z;
end
It may be that you need to show your outer loops where y and z are initialized. Note how in the above, I have removed the need for the indexing variable r as k can do the same. I use k as MATLAB uses i and j to represent the imaginary number.
5 comentarios
Harsha
el 22 de Feb. de 2016
Geoff Hayes
el 22 de Feb. de 2016
You would have to show all of your code so that I can see where the error is being generated. Based on the sample of code that you have shown, I don't think that you need to use symbols for your variables so you could remove the sym.
Geoff Hayes
el 23 de Feb. de 2016
Editada: Geoff Hayes
el 23 de Feb. de 2016
Harsha - what is Base1 supposed to be? An array of symbols or scalar values? I don't understand why your are using symbols for xi, xj, yi, yj, zi and zj.
Harsha
el 28 de Feb. de 2016
Categorías
Más información sobre Common Operations en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!