Info

This question is closed. Reopen it to edit or answer.

Don't understand indexing statement from compiler

1 view (last 30 days)
DJ V
DJ V on 2 Dec 2016
Closed: MATLAB Answer Bot on 20 Aug 2021
MY code is:
function mbd = spherical_mirror_aberr(fn,D )
%SPHERICAL_MIRROR_ABERR Summary of this function goes here
% Detailed explanation goes here
delta_x = 0.01;
Num_x=D/2/delta_x;
f = fn * D;
delta_theta = asin(delta_x/(2*f));
D_theta = asin(D/2/(2*f));
theta(0: delta_theta:D_theta);
Mult = 8*delta_x/D^2;
mbd =Mult*sum( 2*f*tan(2*(0:delta_theta:Dtheta))(1/cos(0:delta_theta:D_theta) -1));
end
The compiler is giving me a warning: "indexing must appear last in an index expression" What does this mean that I need to do. It affects the "mbd" variable equation.
  4 Comments
DJ V
DJ V on 2 Dec 2016
Edited: DJ V on 2 Dec 2016
I simplified the code considerably just to begin to find the error:
Now it produces:
Error in spherical_mirror_aberr (line 10)
mbd =Mult*sum( (0:delatax:D/2));
Adam
Adam on 2 Dec 2016
Errors come with an error message, not just a line number usually.

Answers (2)

Adam
Adam on 2 Dec 2016
Edited: Adam on 2 Dec 2016
sum( ... )( ... )
is not valid syntax in Matlab.
You can't chain together parenthesis is what that error is essentially sayiing. I don't really know what you are trying to do in the expression. Maybe you are just missing a * from between the ) and the (
  4 Comments
Guillaume
Guillaume on 2 Dec 2016
Well, you're missing the * between 2*f*tan(2*theta) and (1/cos(theta)-1)
Image Analyst
Image Analyst on 2 Dec 2016
Since your theta is actually an array of theta's, you'll need dot slash instead of slash: 1./cos(). You'll also need a dot * instead of * almost everywhere, for example tan() .* (1./cos)

DJ V
DJ V on 2 Dec 2016
BUt in the code as written now there is no multiplication or division,and it still won't work.

This question is closed.

Community Treasure Hunt

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

Start Hunting!