Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

To resolve issues starting MATLAB on Mac OS X 10.10 (Yosemite) visit: http://www.mathworks.com/matlabcentral/answers/159016

Error: Attempted to access x(101); index out of bounds because numel(x)=100.

Asked by Benjamin on 3 Dec 2012

I am trying to write a function that will solve for the deflection of a beam given other information.

I am not sure what the error is and I have been trying to solve it for a really long time. The first part of the script (up until the first 'if') is meant to create values that will be already made after I call the function.

Does anybody know what my problem is?

clear;clc
beam.load=1;
beam.support = 1;
L = 30;
x = linspace(0,L);
a = 20;
E = 10.0E6;
I = 9;
F = 100;
i = 1;
if beam.load == 1 && beam.support == 1 % Point & Cantilever
    while 0 < x(i) < a
        y(i) = F*x(i)^2/(6*E*I)*(3*a - x(i));
        i = i + 1;
    end
    while a < x(i) < L
        y(i) = F*a^2/(6*E*I)*(3*x(i) - a);
        i = i+1;
    end
end

0 Comments

Benjamin

Products

No products are associated with this question.

1 Answer

Answer by Matt Fig on 3 Dec 2012
Edited by Matt Fig on 3 Dec 2012
Accepted answer

You want

0 < x(i) && x(i) < a

Your expressuon evaluates to:

1 < a 

Because MATLAB evaluates from left to right. Similarly for the next conditional.

2 Comments

Benjamin on 3 Dec 2012

Thanks!

However, for some reason it didn't work with

0 < x(i) < a

I had to change it to

x(i) < a

and it worked.

Matt J on 3 Dec 2012

However, for some reason it didn't work with 0 < x(i) < a.

Matt Fig explained to you why that wouldn't work and cited that as the very problem with the original code.

Matt Fig

Contact us