Having Trouble With Preallocating

1 view (last 30 days)
Bailey Smith
Bailey Smith on 18 Jun 2018
Edited: Stephen23 on 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!

Accepted Answer

Stephen23
Stephen23 on 18 Jun 2018
Edited: Stephen23 on 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);

More Answers (0)

Categories

Find more on Creating and Concatenating Matrices 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!