Getting the error. "index exceeds the number of array elements".

12 views (last 30 days)
a =2;
ndiv = 100;
x = linspace(0,1,ndiv);
dx = x(2)-x(1);
for i = 2: (ndiv-1)
h(i) = a - (a-1)*x(i);
dh = (h(i+1)-h(i-1))/(2*dx);
end
Index exceeds the number of array elements. Index must not exceed 2.

Accepted Answer

Steven Lord
Steven Lord on 30 Jul 2022
When i is 2, you assign to h(2) but then on the next line you attempt to access h(3). That element doesn't exist yet.
I suggest moving the second line of your loop to after the loop and removing its dependence on the loop variable.
x = (1:10).^2
x = 1×10
1 4 9 16 25 36 49 64 81 100
y = x(2:end)+x(1:end-1)
y = 1×9
5 13 25 41 61 85 113 145 181
Note that y has one fewer element than x does, so you'll need to handle the edges.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!