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)'
Мне нужен мой код, чтобы выйти с этими номерами, так что я могу напечатать их в таблицу и сделать с моим кодом.
Одна очевидная ошибка (возможно): 'if 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