Info

此问题已关闭。 请重新打开它进行编辑或回答。

Don't understand indexing statement from compiler

1 次查看(过去 30 天)
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 个评论
DJ V
DJ V 2016-12-2
编辑:DJ V 2016-12-2
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 2016-12-2
Errors come with an error message, not just a line number usually.

回答(2 个)

Adam
Adam 2016-12-2
编辑:Adam 2016-12-2
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 个评论
Guillaume
Guillaume 2016-12-2
Well, you're missing the * between 2*f*tan(2*theta) and (1/cos(theta)-1)
Image Analyst
Image Analyst 2016-12-2
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 2016-12-2
BUt in the code as written now there is no multiplication or division,and it still won't work.

此问题已关闭。

Community Treasure Hunt

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

Start Hunting!

Translated by