Info

Cette question est clôturée. Rouvrir pour modifier ou répondre.

Don't understand indexing statement from compiler

1 vue (au cours des 30 derniers jours)
DJ V
DJ V le 2 Déc 2016
Clôturé : MATLAB Answer Bot le 20 Août 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 commentaires
DJ V
DJ V le 2 Déc 2016
Modifié(e) : DJ V le 2 Déc 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 le 2 Déc 2016
Errors come with an error message, not just a line number usually.

Réponses (2)

Adam
Adam le 2 Déc 2016
Modifié(e) : Adam le 2 Déc 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 commentaires
Guillaume
Guillaume le 2 Déc 2016
Well, you're missing the * between 2*f*tan(2*theta) and (1/cos(theta)-1)
Image Analyst
Image Analyst le 2 Déc 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 le 2 Déc 2016
BUt in the code as written now there is no multiplication or division,and it still won't work.

Cette question est clôturée.

Community Treasure Hunt

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

Start Hunting!

Translated by