Error using ==> zeros Maximum variable size allowed by the program is exceeded.
5 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
I keep getting the error below, the program which creates a (1 x 21) matrix. I have 8 Gb of memory on my pc surely this small matrix doesn't take up this much memory?
??? Error using ==> zeros Maximum variable size allowed by the program is exceeded.
Error in ==> Task1_2_38 at 29 diff = zeros(1:n);
y = -b/2:.1:b/2;
D = .05;
lift_dist = d*v*sqrt(1-((2*y)/b).^2); %lift distribution in this case elliptical
n = length(lift_dist);
for ind = 1:n
circ_dist = lift_dist./(d*v); % circulation distribution
%display(circ_dist)
end
%figure(1)
%plot(y,circ_dist)%plot circulation distribution vs the wing span (y)
%display(y)
%number of sectiond for the airfoill
dy = b/(n-1);
%vector initialization
induced_angle = zeros(1,n);
%Calculate the constants for the induced angle equation:
diff = zeros(1:n);
while (norm(diff) > 1e-5)
0 Commenti
Risposta accettata
Walter Roberson
il 4 Dic 2011
B = zeros(m,n,p,...) or B = zeros([m n p ...]) returns an m-by-n-by-p-by-... array of zeros.
Now, 1:n is the same as the vector [1 2 3 4 5 6 ... n]
so
zeros(1:n)
is the same as
zeros([1,2,3,4,...n])
which would request factorial(n) array locations. If your n is 21, that would be 51090942171709440000 array locations, which is between 2^65 and 2^66 array locations, and thus would require between 2^68 and 2^69 bytes of storage.
3 Commenti
Jan
il 4 Dic 2011
@James: Because "zeros(1, n)" creates a [1 x n] vector.
Did you get the point already? "zeros(1:n)" is very different from "zeros(1, n)".
Più risposte (1)
James
il 4 Dic 2011
1 Commento
Walter Roberson
il 4 Dic 2011
Don't feel too bad. See Matt Fig's answer in
http://www.mathworks.com/matlabcentral/answers/1759-dumb-mistakes-we-make-with-matlab
Vedere anche
Categorie
Scopri di più su Performance and Memory in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!