MATLAB Answers

Troubleshooting tips

1 view (last 30 days)
Alex
Alex on 6 Mar 2012
Hey all,
I'm creating a function to pass to fsolve, to be solved in terms of V. When I run my program, however, Matlab returns an "Index Exceeds matrix Dimensions" error. I have a feeling I might have dropped a dot in one of my dot-operators in my function, an error which the debugger won't pick up because matlab is still performing a valid operation within the equation itself. Is there any way to find the mistake causing the error? I'm posting the equation below, so you can see why this is causing me a headache. Maybe you can find the mistake? Thanks!
P.S.: This is all a single equation, and yes, this is real.
F = @(V) (((((exp((-1).*((2.*pi().*V(2).*d1)./y)).*(((V(1).^2 - n2.^2 + V(2).^2 - k2.^2)./((V(1) + n2).^2 + (V(2) + k2).^2)).*cos(((2.*pi().*V(1).*d1)./y)) + ((2.*(V(1).*k2 - n2.*V(2)))./((V(1) + n2).^2 + (V(2) + k2).^2)).*sin(((2.*pi().*V(1).*d1)./y)))) + ((n0.^2 - V(1).^2 - V(2).^2)./((n0 + V(1)).^2 + V(2).^2)).*(exp(((2.*pi().*V(2).*d1)./y)).*cos(((2.*pi().*V(1).*d1)./y))) - ((2.*n0.*V(2))./((n0 + V(1)).^2 + V(2).^2)).*(exp(((2.*pi().*V(2).*d1)./y)).*sin(((2.*pi().*V(1).*d1)./y)))).*(exp(((2.*pi().*k2.*d2)./y)).*cos(((2.*pi().*n2.*d2)./y))) - ((exp((-1).*((2.*pi().*V(2).*d1)./y)).*(((2.*(V(1).*k2 - n2.*V(2)))./((V(1) + n2).^2 + (V(2) + k2).^2)).*cos(((2.*pi().*V(1).*d1)./y)) - ((V(1).^2 - n2.^2 + V(2).^2 - k2.^2)./((V(1) + n2).^2 + (V(2) + k2).^2)).*sin(((2.*pi().*V(1).*d1)./y)))) + ((2.*n0.*V(2))./((n0 + V(1)).^2 + V(2).^2)).*(exp(((2.*pi().*V(2).*d1)./y)).*cos(((2.*pi().*V(1).*d1)./y))) + ((n0.^2 - V(1).^2 - V(2).^2)./((n0 + V(1)).^2 + V(2).^2)).*(exp(((2.*pi().*V(2).*d1)./y)).*sin(((2.*pi().*V(1).*d1)./y)))).*(exp(((2.*pi().*k2.*d2)./y)).*sin(((2.*pi().*n2.*d2)./y))) + ((exp((-1).*((2.*pi().*V(2).*d1)./y)).*cos(((2.*pi().*V(1).*d1)./y))) + ((n0.^2 - V(1).^2 - V(2).^2)./((n0 + V(1)).^2 + V(2).^2)).*(exp(((2.*pi().*V(2).*d1)./y)).*(((V(1).^2 - n2.^2 + V(2).^2 - k2.^2)./((V(1) + n2).^2 + (V(2) + k2).^2)).*cos(((2.*pi().*V(1).*d1)./y)) - ((2.*(V(1).*k2 - n2.*V(2)))./((V(1) + n2).^2 + (V(2) + k2).^2)).*sin(((2.*pi().*V(1).*d1)./y)))) - ((2.*n0.*V(2))./((n0 + V(1)).^2 + V(2).^2)).*(exp(((2.*pi().*V(2).*d1)./y)).*(((2.*(V(1).*k2 - n2.*V(2)))./((V(1) + n2).^2 + (V(2) + k2).^2)).*cos(((2.*pi().*V(1).*d1)./y)) + ((V(1).^2 - n2.^2 + V(2).^2 - k2.^2)./((V(1) + n2).^2 + (V(2) + k2).^2)).*sin(((2.*pi().*V(1).*d1)./y))))).*(exp((-1).*((2.*pi().*k2.*d2)./y)).*(((n2.^2 - n3.^2 + k2.^2 - k3.^2)./((n2 + n3).^2 + (k2 + k3).^2)).*cos(((2.*pi().*n2.*d2)./y)) + ((2.*(n2.*k3 - n3.*k2))./((n2 + n3).^2 + (k2 + k3).^2)).*sin(((2.*pi().*n2.*d2)./y)))) - (((-1).*(exp((-1).*((2.*pi().*V(2).*d1)./y)).*sin(((2.*pi().*V(1).*d1)./y)))) + ((2.*n0.*V(2))./((n0 + V(1)).^2 + V(2).^2)).*(exp(((2.*pi().*V(2).*d1)./y)).*(((V(1).^2 - n2.^2 + V(2).^2 - k2.^2)./((V(1) + n2).^2 + (V(2) + k2).^2)).*cos(((2.*pi().*V(1).*d1)./y)) - ((2.*(V(1).*k2 - n2.*V(2)))./((V(1) + n2).^2 + (V(2) + k2).^2)).*sin(((2.*pi().*V(1).*d1)./y)))) + ((n0.^2 - V(1).^2 - V(2).^2)./((n0 + V(1)).^2 + V(2).^2)).*(exp(((2.*pi().*V(2).*d1)./y)).*(((2.*(V(1).*k2 - n2.*V(2)))./((V(1) + n2).^2 + (V(2) + k2).^2)).*cos(((2.*pi().*V(1).*d1)./y)) + ((V(1).^2 - n2.^2 + V(2).^2 - k2.^2)./((V(1) + n2).^2 + (V(2) + k2).^2)).*sin(((2.*pi().*V(1).*d1)./y))))).*(exp((-1).*((2.*pi().*k2.*d2)./y)).*(((2.*(n2.*k3 - n3.*k2))./((n2 + n3).^2 + (k2 + k3).^2)).*cos(((2.*pi().*n2.*d2)./y)) - ((n2.^2 - n3.^2 + k2.^2 - k3.^2)./((n2 + n3).^2 + (k2 + k3).^2)).*sin(((2.*pi().*n2.*d2)./y))))).^2 + (((exp((-1).*((2.*pi().*V(2).*d1)./y)).*(((2.*(V(1).*k2 - n2.*V(2)))./((V(1) + n2).^2 + (V(2) + k2).^2)).*cos(((2.*pi().*V(1).*d1)./y)) - ((V(1).^2 - n2.^2 + V(2).^2 - k2.^2)./((V(1) + n2).^2 + (V(2) + k2).^2)).*sin(((2.*pi().*V(1).*d1)./y)))) + ((2.*n0.*V(2))./((n0 + V(1)).^2 + V(2).^2)).*(exp(((2.*pi().*V(2).*d1)./y)).*cos(((2.*pi().*V(1).*d1)./y))) + ((n0.^2 - V(1).^2 - V(2).^2)./((n0 + V(1)).^2 + V(2).^2)).*(exp(((2.*pi().*V(2).*d1)./y)).*sin(((2.*pi().*V(1).*d1)./y)))).*(exp(((2.*pi().*k2.*d2)./y)).*cos(((2.*pi().*n2.*d2)./y))) + ((exp((-1).*((2.*pi().*V(2).*d1)./y)).*(((V(1).^2 - n2.^2 + V(2).^2 - k2.^2)./((V(1) + n2).^2 + (V(2) + k2).^2)).*cos(((2.*pi().*V(1).*d1)./y)) + ((2.*(V(1).*k2 - n2.*V(2)))./((V(1) + n2).^2 + (V(2) + k2).^2)).*sin(((2.*pi().*V(1).*d1)./y)))) + ((n0.^2 - V(1).^2 - V(2).^2)./((n0 + V(1)).^2 + V(2).^2)).*(exp(((2.*pi().*V(2).*d1)./y)).*cos(((2.*pi().*V(1).*d1)./y))) - ((2.*n0.*V(2))./((n0 + V(1)).^2 + V(2).^2)).*(exp(((2.*pi().*V(2).*d1)./y)).*sin(((2.*pi().*V(1).*d1)./y)))).*(exp(((2.*pi().*k2.*d2)./y)).*sin(((2.*pi().*n2.*d2)./y))) + (((-1).*(exp((-1).*((2.*pi().*V(2).*d1)./y)).*sin(((2.*pi().*V(1).*d1)./y)))) + ((2.*n0.*V(2))./((n0 + V(1)).^2 + V(2).^2)).*(exp(((2.*pi().*V(2).*d1)./y)).*(((V(1).^2 - n2.^2 + V(2).^2 - k2.^2)./((V(1) + n2).^2 + (V(2) + k2).^2)).*cos(((2.*pi().*V(1).*d1)./y)) - ((2.*(V(1).*k2 - n2.*V(2)))./((V(1) + n2).^2 + (V(2) + k2).^2)).*sin(((2.*pi().*V(1).*d1)./y)))) + ((n0.^2 - V(1).^2 - V(2).^2)./((n0 + V(1)).^2 + V(2).^2)).*(exp(((2.*pi().*V(2).*d1)./y)).*(((2.*(V(1).*k2 - n2.*V(2)))./((V(1) + n2).^2 + (V(2) + k2).^2)).*cos(((2.*pi().*V(1).*d1)./y)) + ((V(1).^2 - n2.^2 + V(2).^2 - k2.^2)./((V(1) + n2).^2 + (V(2) + k2).^2)).*sin(((2.*pi().*V(1).*d1)./y))))).*(exp((-1).*((2.*pi().*k2.*d2)./y)).*(((n2.^2 - n3.^2 + k2.^2 - k3.^2)./((n2 + n3).^2 + (k2 + k3).^2)).*cos(((2.*pi().*n2.*d2)./y)) + ((2.*(n2.*k3 - n3.*k2))./((n2 + n3).^2 + (k2 + k3).^2)).*sin(((2.*pi().*n2.*d2)./y)))) + ((exp((-1).*((2.*pi().*V(2).*d1)./y)).*cos(((2.*pi().*V(1).*d1)./y))) + ((n0.^2 - V(1).^2 - V(2).^2)./((n0 + V(1)).^2 + V(2).^2)).*(exp(((2.*pi().*V(2).*d1)./y)).*(((V(1).^2 - n2.^2 + V(2).^2 - k2.^2)./((V(1) + n2).^2 + (V(2) + k2).^2)).*cos(((2.*pi().*V(1).*d1)./y)) - ((2.*(V(1).*k2 - n2.*V(2)))./((V(1) + n2).^2 + (V(2) + k2).^2)).*sin(((2.*pi().*V(1).*d1)./y)))) - ((2.*n0.*V(2))./((n0 + V(1)).^2 + V(2).^2)).*(exp(((2.*pi().*V(2).*d1)./y)).*(((2.*(V(1).*k2 - n2.*V(2)))./((V(1) + n2).^2 + (V(2) + k2).^2)).*cos(((2.*pi().*V(1).*d1)./y)) + ((V(1).^2 - n2.^2 + V(2).^2 - k2.^2)./((V(1) + n2).^2 + (V(2) + k2).^2)).*sin(((2.*pi().*V(1).*d1)./y))))).*(exp((-1).*((2.*pi().*k2.*d2)./y)).*(((2.*(n2.*k3 - n3.*k2))./((n2 + n3).^2 + (k2 + k3).^2)).*cos(((2.*pi().*n2.*d2)./y)) - ((n2.^2 - n3.^2 + k2.^2 - k3.^2)./((n2 + n3).^2 + (k2 + k3).^2)).*sin(((2.*pi().*n2.*d2)./y))))).^2)./((((exp(((2.*pi().*V(2).*d1)./y)).*cos(((2.*pi().*V(1).*d1)./y))) + ((n0.^2 - V(1).^2 - V(2).^2)./((n0 + V(1)).^2 + V(2).^2)).*(exp((-1).*((2.*pi().*V(2).*d1)./y)).*(((V(1).^2 - n2.^2 + V(2).^2 - k2.^2)./((V(1) + n2).^2 + (V(2) + k2).^2)).*cos(((2.*pi().*V(1).*d1)./y)) + ((2.*(V(1).*k2 - n2.*V(2)))./((V(1) + n2).^2 + (V(2) + k2).^2)).*sin(((2.*pi().*V(1).*d1)./y)))) - ((2.*n0.*V(2))./((n0 + V(1)).^2 + V(2).^2)).*(exp((-1).*((2.*pi().*V(2).*d1)./y)).*(((2.*(V(1).*k2 - n2.*V(2)))./((V(1) + n2).^2 + (V(2) + k2).^2)).*cos(((2.*pi().*V(1).*d1)./y)) - ((V(1).^2 - n2.^2 + V(2).^2 - k2.^2)./((V(1) + n2).^2 + (V(2) + k2).^2)).*sin(((2.*pi().*V(1).*d1)./y))))).*(exp(((2.*pi().*k2.*d2)./y)).*cos(((2.*pi().*n2.*d2)./y))) - ((exp(((2.*pi().*V(2).*d1)./y)).*sin(((2.*pi().*V(1).*d1)./y))) + ((2.*n0.*V(2))./((n0 + V(1)).^2 + V(2).^2)).*(exp((-1).*((2.*pi().*V(2).*d1)./y)).*(((V(1).^2 - n2.^2 + V(2).^2 - k2.^2)./((V(1) + n2).^2 + (V(2) + k2).^2)).*cos(((2.*pi().*V(1).*d1)./y)) + ((2.*(V(1).*k2 - n2.*V(2)))./((V(1) + n2).^2 + (V(2) + k2).^2)).*sin(((2.*pi().*V(1).*d1)./y)))) + ((n0.^2 - V(1).^2 - V(2).^2)./((n0 + V(1)).^2 + V(2).^2)).*(exp((-1).*((2.*pi().*V(2).*d1)./y)).*(((2.*(V(1).*k2 - n2.*V(2)))./((V(1) + n2).^2 + (V(2) + k2).^2)).*cos(((2.*pi().*V(1).*d1)./y)) - ((V(1).^2 - n2.^2 + V(2).^2 - k2.^2)./((V(1) + n2).^2 + (V(2) + k2).^2)).*sin(((2.*pi().*V(1).*d1)./y))))).*(exp(((2.*pi().*k2.*d2)./y)).*sin(((2.*pi().*n2.*d2)./y))) + ((exp(((2.*pi().*V(2).*d1)./y)).*(((V(1).^2 - n2.^2 + V(2).^2 - k2.^2)./((V(1) + n2).^2 + (V(2) + k2).^2)).*cos(((2.*pi().*V(1).*d1)./y)) - ((2.*(V(1).*k2 - n2.*V(2)))./((V(1) + n2).^2 + (V(2) + k2).^2)).*sin(((2.*pi().*V(1).*d1)./y)))) + ((n0.^2 - V(1).^2 - V(2).^2)./((n0 + V(1)).^2 + V(2).^2)).*(exp((-1).*((2.*pi().*V(2).*d1)./y)).*cos(((2.*pi().*V(1).*d1)./y))) - ((2.*n0.*V(2))./((n0 + V(1)).^2 + V(2).^2)).*((-1).*(exp((-1).*((2.*pi().*V(2).*d1)./y)).*sin(((2.*pi().*V(1).*d1)./y))))).*(exp((-1).*((2.*pi().*k2.*d2)./y)).*(((n2.^2 - n3.^2 + k2.^2 - k3.^2)./((n2 + n3).^2 + (k2 + k3).^2)).*cos(((2.*pi().*n2.*d2)./y)) + ((2.*(n2.*k3 - n3.*k2))./((n2 + n3).^2 + (k2 + k3).^2)).*sin(((2.*pi().*n2.*d2)./y)))) - ((exp(((2.*pi().*V(2).*d1)./y)).*(((2.*(V(1).*k2 - n2.*V(2)))./((V(1) + n2).^2 + (V(2) + k2).^2)).*cos(((2.*pi().*V(1).*d1)./y)) + ((V(1).^2 - n2.^2 + V(2).^2 - k2.^2)./((V(1) + n2).^2 + (V(2) + k2).^2)).*sin(((2.*pi().*V(1).*d1)./y)))) + ((2.*n0.*V(2))./((n0 + V(1)).^2 + V(2).^2)).*(exp((-1).*((2.*pi().*V(2).*d1)./y)).*cos(((2.*pi().*V(1).*d1)./y))) + ((n0.^2 - V(1).^2 - V(2).^2)./((n0 + V(1)).^2 + V(2).^2)).*((-1).*(exp((-1).*((2.*pi().*V(2).*d1)./y)).*sin(((2.*pi().*V(1).*d1)./y))))).*(exp((-1).*((2.*pi().*k2.*d2)./y)).*(((2.*(n2.*k3 - n3.*k2))./((n2 + n3).^2 + (k2 + k3).^2)).*cos(((2.*pi().*n2.*d2)./y)) - ((n2.^2 - n3.^2 + k2.^2 - k3.^2)./((n2 + n3).^2 + (k2 + k3).^2)).*sin(((2.*pi().*n2.*d2)./y))))).^2 + (((exp(((2.*pi().*V(2).*d1)./y)).*sin(((2.*pi().*V(1).*d1)./y))) + ((2.*n0.*V(2))./((n0 + V(1)).^2 + V(2).^2)).*(exp((-1).*((2.*pi().*V(2).*d1)./y)).*(((V(1).^2 - n2.^2 + V(2).^2 - k2.^2)./((V(1) + n2).^2 + (V(2) + k2).^2)).*cos(((2.*pi().*V(1).*d1)./y)) + ((2.*(V(1).*k2 - n2.*V(2)))./((V(1) + n2).^2 + (V(2) + k2).^2)).*sin(((2.*pi().*V(1).*d1)./y)))) + ((n0.^2 - V(1).^2 - V(2).^2)./((n0 + V(1)).^2 + V(2).^2)).*(exp((-1).*((2.*pi().*V(2).*d1)./y)).*(((2.*(V(1).*k2 - n2.*V(2)))./((V(1) + n2).^2 + (V(2) + k2).^2)).*cos(((2.*pi().*V(1).*d1)./y)) - ((V(1).^2 - n2.^2 + V(2).^2 - k2.^2)./((V(1) + n2).^2 + (V(2) + k2).^2)).*sin(((2.*pi().*V(1).*d1)./y))))).*(exp(((2.*pi().*k2.*d2)./y)).*cos(((2.*pi().*n2.*d2)./y))) + ((exp(((2.*pi().*V(2).*d1)./y)).*cos(((2.*pi().*V(1).*d1)./y))) + ((n0.^2 - V(1).^2 - V(2).^2)./((n0 + V(1)).^2 + V(2).^2)).*(exp((-1).*((2.*pi().*V(2).*d1)./y)).*(((V(1).^2 - n2.^2 + V(2).^2 - k2.^2)./((V(1) + n2).^2 + (V(2) + k2).^2)).*cos(((2.*pi().*V(1).*d1)./y)) + ((2.*(V(1).*k2 - n2.*V(2)))./((V(1) + n2).^2 + (V(2) + k2).^2)).*sin(((2.*pi().*V(1).*d1)./y)))) - ((2.*n0.*V(2))./((n0 + V(1)).^2 + V(2).^2)).*(exp((-1).*((2.*pi().*V(2).*d1)./y)).*(((2.*(V(1).*k2 - n2.*V(2)))./((V(1) + n2).^2 + (V(2) + k2).^2)).*cos(((2.*pi().*V(1).*d1)./y)) - ((V(1).^2 - n2.^2 + V(2).^2 - k2.^2)./((V(1) + n2).^2 + (V(2) + k2).^2)).*sin(((2.*pi().*V(1).*d1)./y))))).*(exp(((2.*pi().*k2.*d2)./y)).*sin(((2.*pi().*n2.*d2)./y))) + ((exp(((2.*pi().*V(2).*d1)./y)).*(((2.*(V(1).*k2 - n2.*V(2)))./((V(1) + n2).^2 + (V(2) + k2).^2)).*cos(((2.*pi().*V(1).*d1)./y)) + ((V(1).^2 - n2.^2 + V(2).^2 - k2.^2)./((V(1) + n2).^2 + (V(2) + k2).^2)).*sin(((2.*pi().*V(1).*d1)./y)))) + ((2.*n0.*V(2))./((n0 + V(1)).^2 + V(2).^2)).*(exp((-1).*((2.*pi().*V(2).*d1)./y)).*cos(((2.*pi().*V(1).*d1)./y))) + ((n0.^2 - V(1).^2 - V(2).^2)./((n0 + V(1)).^2 + V(2).^2)).*((-1).*(exp((-1).*((2.*pi().*V(2).*d1)./y)).*sin(((2.*pi().*V(1).*d1)./y))))).*(exp((-1).*((2.*pi().*k2.*d2)./y)).*(((n2.^2 - n3.^2 + k2.^2 - k3.^2)./((n2 + n3).^2 + (k2 + k3).^2)).*cos(((2.*pi().*n2.*d2)./y)) + ((2.*(n2.*k3 - n3.*k2))./((n2 + n3).^2 + (k2 + k3).^2)).*sin(((2.*pi().*n2.*d2)./y)))) + ((exp(((2.*pi().*V(2).*d1)./y)).*(((V(1).^2 - n2.^2 + V(2).^2 - k2.^2)./((V(1) + n2).^2 + (V(2) + k2).^2)).*cos(((2.*pi().*V(1).*d1)./y)) - ((2.*(V(1).*k2 - n2.*V(2)))./((V(1) + n2).^2 + (V(2) + k2).^2)).*sin(((2.*pi().*V(1).*d1)./y)))) + ((n0.^2 - V(1).^2 - V(2).^2)./((n0 + V(1)).^2 + V(2).^2)).*(exp((-1).*((2.*pi().*V(2).*d1)./y)).*cos(((2.*pi().*V(1).*d1)./y))) - ((2.*n0.*V(2))./((n0 + V(1)).^2 + V(2).^2)).*((-1).*(exp((-1).*((2.*pi().*V(2).*d1)./y)).*sin(((2.*pi().*V(1).*d1)./y))))).*(exp((-1).*((2.*pi().*k2.*d2)./y)).*(((2.*(n2.*k3 - n3.*k2))./((n2 + n3).^2 + (k2 + k3).^2)).*cos(((2.*pi().*n2.*d2)./y)) - ((n2.^2 - n3.^2 + k2.^2 - k3.^2)./((n2 + n3).^2 + (k2 + k3).^2)).*sin(((2.*pi().*n2.*d2)./y))))).^2)) - R2;

Accepted Answer

Andrew Newell
Andrew Newell on 6 Mar 2012
I tried it, and it doesn't complain if you provide values for all the constants and make sure that V has two elements, for example:
d1 = rand; y = rand; n2 = rand; k2 = rand; n0 = rand; d2 = rand; n3 = rand; k3 = rand; R2 = rand;
F = @(V) ...
F(rand(2,1))
  2 Comments
Alex
Alex on 6 Mar 2012
Oh, after posting this I've found the problem, I left the guess field blank. Hahaha, the things we miss =)

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!