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

조회 수: 2 (최근 30일)
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

채택된 답변

Matt Fig
Matt Fig 2012년 12월 3일
편집: Matt Fig 2012년 12월 3일
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
Benjamin
Benjamin 2012년 12월 3일
편집: Benjamin 2012년 12월 3일
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
Matt J 2012년 12월 3일
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.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Programming에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by