# ERROR : Unrecognized function or variable , Index exceeds the number of array elements

4 views (last 30 days)
건희 이 on 16 Mar 2022
Commented: 건희 이 on 16 Mar 2022
Graphs of parallel and vertical polarization of microwaves are being implemented as matlabs.
However, the error mentioned in the title occurred.
Please tell me how to solve this error.
er1 = 2.55;
er2 = 1;
eta_1 = 377;
eta_2 = 377/sqrt(er1);
sin(theta_b) = 1/sqrt(1+er1/er2);
cos(theta_t) = sqrt(1-er1*sin(theta_b)^2/er2);
for theta_i = [1:90];
parallel_pol = (eta_2*cos(theta_t)-eta_1*cos(theta_i))/(eta_2*cos(theta_t)+eta_1*cos(theta_i));
end
plot(theta_i,abs(parallel_pol),"-","r","LineWidth",2)
##### 0 CommentsShowHide -1 older comments

Sign in to comment.

### Accepted Answer

Voss on 16 Mar 2022
Edited: Voss on 16 Mar 2022
This line:
sin(theta_b) = 1/sqrt(1+er1/er2);
is not valid syntax because you cannot assign a value to sin(theta_b). If you want to assign a value to theta_b such that the mathematical relation above is true, you could do this:
theta_b = asind(1/sqrt(1+er1/er2));
which is basically "solving for" theta_b in terms of the other variables, using the inverse sine function asind(), which returns an angle in degrees.
And since you're dealing with angles in degrees here, you should use sind and cosd, instead of sin and cos, which expect input angles to be in radians.
I made those changes and a few others below:
er1 = 2.55;
er2 = 1;
eta_1 = 377;
eta_2 = 377/sqrt(er1);
% sin(theta_b) = 1/sqrt(1+er1/er2);
% cos(theta_t) = sqrt(1-er1*sin(theta_b)^2/er2);
theta_b = asind(1/sqrt(1+er1/er2));
theta_t = acosd(sqrt(1-er1*sind(theta_b)^2/er2));
% for theta_i = [1:90];
% parallel_pol = (eta_2*cos(theta_t)-eta_1*cos(theta_i))/(eta_2*cos(theta_t)+eta_1*cos(theta_i));
% end
theta_i = 1:90;
parallel_pol = (eta_2*cosd(theta_t)-eta_1*cosd(theta_i))./(eta_2*cosd(theta_t)+eta_1*cosd(theta_i));
% plot(theta_i,abs(parallel_pol),"-","r","LineWidth",2)
plot(theta_i,abs(parallel_pol),"-r","LineWidth",2);
xlabel('theta_i');
ylabel('parallel\_pol');
##### 7 CommentsShowHide 6 older comments
건희 이 on 16 Mar 2022
OK. I'll review it again based on your answer. Thank you very much for everything.

Sign in to comment.

### More Answers (2)

David Hill on 16 Mar 2022
er1 = 2.55;
er2 = 1;
eta_1 = 377;
eta_2 = 377/sqrt(er1);
sin_theta_b = 1/sqrt(1+er1/er2);%just a scalar sin(theta_b) makes no sense
cos_theta_t = sqrt(1-er1*sin_theta_b^2/er2);%just scalar cos(theta_t) makes no sense
theta_i = 1:90;%no need for a loop (I assume this is in degrees)
parallel_pol = (eta_2*cos_theta_t-eta_1*cosd(theta_i))./(eta_2*cos_theta_t+eta_1*cosd(theta_i));%I assume you want cosd
plot(theta_i,abs(parallel_pol))
##### 1 CommentShowHide None
건희 이 on 16 Mar 2022
thank you~!

Sign in to comment.

Enrico Gambini on 16 Mar 2022
Hi, try this.
er1 = 2.55;
er2 = 1;
eta_1 = 377;
eta_2 = 377/sqrt(er1);
sin_theta_b = 1/sqrt(1+er1/er2);
cos_theta_t = sqrt(1-er1*sin_theta_b^2/er2);
for i = [1:90];
parallel_pol(i) = (eta_2*cos_theta_t-eta_1*cos(i))/(eta_2*cos_theta_t+eta_1*cos(i));
end
plot([1:90],abs(parallel_pol),"r-","LineWidth",2);
##### 1 CommentShowHide None
건희 이 on 16 Mar 2022
thank you!!

Sign in to comment.

### Categories

Find more on Antenna and Array Analysis in Help Center and File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by