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

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

 Respuesta aceptada

Matt Fig
Matt Fig el 3 de Dic. de 2012
Editada: Matt Fig el 3 de Dic. de 2012
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 comentarios

Benjamin
Benjamin el 3 de Dic. de 2012
Editada: Benjamin el 3 de Dic. de 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.
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.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Etiquetas

Preguntada:

el 3 de Dic. de 2012

Community Treasure Hunt

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

Start Hunting!

Translated by