0
length = 31 ;
while length < 0
length = input('enter a value greater than 0:')
end
pounds = 26905;
elasticity = 45941267 ;
width = 4.3
while width < 0
width = input('enter a value greater than 0:')
end
height = 1.2
while height < 0
height = input('enter a value greater than 0:');
end
I = (width*height^3)/12;
a = linspace(1,200)';
b = length - a ;
if a >= 0
maximum = (-pounds*b(length.^2-(b.^2))^(3/2))/(9*sqrt(3)*elasticity*I*length)'
elseif b >= 0
maximum = (-pounds*a(length.^2-(a.^2))^(3/2))/(9*sqrt(3)*elasticity*I*length)'
end
它發生在這一行:如何擺脫我的代碼中的下標索引錯誤?
maximum = (-pounds*b(length.^2-(b.^2))^(3/2))/(9*sqrt(3)*elasticity*I*length)'
我需要我的代碼來與這些數字,所以我可以在表打印出來,並與我的代碼來完成。
一個明顯的錯誤(可能)是'如果a> = 0'和' elseif ...'。第一個條件總是如此,因爲a = 1:200。所以,第二部分永遠不會被評估。 –
錯誤最可能發生在這一行的這一部分:'... b(length。^ 2-(b。^ 2))...'。在你的代碼中,'b'實際上是一個向量,因爲你正在索引到'b',所以你必須確保索引是正整數和整數值。但是,似乎你認爲'b'是某種功能。 「if」語句的另一部分也可以這樣說:「...... a(length。^ 2-(b。^ 2))...」。我不知道你的代碼應該做什麼,所以請編輯你的帖子來描述所需的行爲。 – rayryeng
只是一個評論,儘量避免使用在Matlab函數中構建的單詞。例如'length'是一個可以給你數組的最大維數的函數。覆蓋它可能會導致問題。例如'lenVar = length(myVar);'可能不會產生某人期望的內容。 – Matt