Index exceeds the number of array elements (1) Issue
Show older comments
I keep getting the error "Index exceeds the number of array elements (1)". The error starts at the line with NX1=. I have no idea how to fix this. The goal is to iterate n and m values to find when NX1 is at a minimum
D = zeros(3,3);
D = D + 1/3*Qbar0*(z(2)^3-z(1)^3);
D = D + 1/3*Qbar0*(z(3)^3-z(2)^3);
D = D + 1/3*Qbar90*(z(4)^3-z(3)^3);
D = D + 1/3*Qbar90*(z(5)^3-z(4)^3);
D = D + 1/3*Qbar0*(z(6)^3-z(5)^3);
D = D + 1/3*Qbar0*(z(7)^3-z(6)^3);
R1 = 0;
for n = 1:10
for m = 1:10;
Nx1(n,m) = (pi^2) * ((D(1,1)*(m/a)^2 + 2*(D(1,2) + 2*D(3,3))*(n/b)^2 + D(2,2)*(n/b)^4 * (a/m)^2)/ (1 + R1((a/b * n/m)^2)))
end
end
min(min(Nx1))
3 Comments
Star Strider
on 4 Dec 2020
This is confusing.
You initially define ‘D’ as a (3x3) matrix (preallocation is the correct approach), then define it as a series of scalars ((1x1) arrays), only the last of which is used, since it over-writes all the previous values. Besides, there are only 6 values of ‘D’ provided, while the original ‘D’ has 9 elements.
Sierra Rezell
on 4 Dec 2020
Sierra Rezell
on 4 Dec 2020
Answers (1)
Théophane Dimier
on 4 Dec 2020
0 votes
Have you checked if Nx1 is not already existing before the for loop? It might be that it already exists and that it is a scalar. A hint could be to clear the workspace at the beginning of the code. Anyway, you can trigger "Pause on error" (click on the small arrow under the "Run" button). It will pause the execution right before the error, then launch the code and when it stops, look at the list of variable to check if Nx1 is not just a scalar.
1 Comment
Sierra Rezell
on 4 Dec 2020
Categories
Find more on Matrix Indexing in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!