Having Trouble With Preallocating

1 Ansicht (letzte 30 Tage)
Bailey Smith
Bailey Smith am 18 Jun. 2018
Bearbeitet: Stephen23 am 18 Jun. 2018
When I run my code:
clear; clc;
tic
x=(0:pi/1000000:pi);
m=zeros(1000000);
y=sin(x);
n=1;
L=length(x);
while n<L
m(n,1)=x(n);
m(n,2)=(y(n+1)-y(n))/(x(n+1)-x(n));
n=n+1;
end
m(n,1)=x(n);
m(n,2)=NaN;
toc
I get an error stating: Error using zeros Requested 1000000x1000000 (7450.6GB) array exceeds maximum array size preference. Creation of arrays greater than this limit may take a long time and cause MATLAB to become unresponsive. See array size limit or preference panel for more information.
What should I do about this? I would like to keep the while loops in there and just preallocate if possible. Thanks!

Akzeptierte Antwort

Stephen23
Stephen23 am 18 Jun. 2018
Bearbeitet: Stephen23 am 18 Jun. 2018
m = zeros(1000000,2);
Although a better idea would be to preallocate with the exact required size:
L = numel(x);
m = zeros(L,2);

Weitere Antworten (0)

Kategorien

Mehr zu Creating and Concatenating Matrices finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by