Why am i getting this error message? "Array indices must be positive integers or logical values."

3 views (last 30 days)
x = 120;
for n=1:10
f= (x(cosh(600/x) -12)-108);
x_1 = x-(f/diff(f))
x=x_1;
end
Array indices must be positive integers or logical values.

Accepted Answer

Bjorn Gustavsson
Bjorn Gustavsson on 26 Oct 2021
In matlab (and most other programming-languages) you will have to write out the multiplication-operator (* for matrix multiplication or .* for elementwise multiplication). The way you write:
x(cosh(600/x)-12)
Will be interpreted as the cosh(600/x)-12th element of the matrix x. Note here that 600/x would be a right-matrix-division, for elementwise division you will have to use ./.
Most likely you want:
f= (x*(cosh(600/x) -12)-108);
Then you will have a problem with the next line too, because f is now a scalar which make the function diff return an empty array, [], so you will have to do something about that.
If you are very new to matlab take a trip through the on-ramp courses on the Matlab web-site.
HTH
  5 Comments

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!