Vectors must be the same length.
Mostrar comentarios más antiguos
theta=30:0.01:50;
lambda=633;
k0=2*pi/lambda;
e1=1.50^2;e3=1.33^2;e2=(0.12+1i*3.5)^2;
n1=1.50;n3=1.33;n2=0.12+1i*3.433;
d2=50;
n1=1.50;
x=n1*sind(theta);
k1=k0.*sqrt(e1.*mu1-x.^2);
k2=k0.*sqrt(e2.*mu2-x.^2);
k3=k0.*sqrt(e3.*mu3-x.^2);
q1=sqrt(e1-x.^2)./e1;
q2=sqrt(e2-x.^2)./e2;
q3=sqrt(e3-x.^2)./e3;
p=k2.*d2;
m111=cosd(p);
m112=-1i.*sind(p)./q2;
m121=-1i*q2.*sind(p);
m122=cosd(p);
Mtot=zeros(1,length(theta));
for j=1:length(theta)
M1=[m111(1,j),m112(1,j);m121(1,j),m122(1,j)];
Mtot=M1;
R(j) =((Mtot(1,1) +Mtot(1,2).*q3).*q1-Mtot(2,1) -Mtot(2,2).*q3)/(((Mtot(1,1) +Mtot(1,2).*q3).*q1+Mtot(2,1) +Mtot(2,2).*q3)).^2;
end
figure(1);
plot(theta,abs(R));
xlabel('incident angle');
ylabel('transmmission, s-pol');
plot is not showing any value error
Vectors must be the same length. pl help to plot
7 comentarios
shiv gaur
el 27 de En. de 2022
Torsten
el 27 de En. de 2022
The program might plot something if instead of R(j) you write R{j} and if you substitute the division sign "/" in the expression on the right-hand side by "./" and if you only try plot(theta,abs(R{1})). But I doubt this is what you expect to plot.
shiv gaur
el 27 de En. de 2022
shiv gaur
el 27 de En. de 2022
Respuestas (1)
Walter Roberson
el 27 de En. de 2022
0 votos
Is it possible that you ran this code twice with more theta values the first time? You are not preallocating R so if you ran multiple times R would exist with the previous size.
It would be a good idea to preallocate R in your code.
14 comentarios
shiv gaur
el 27 de En. de 2022
shiv gaur
el 27 de En. de 2022
shiv gaur
el 27 de En. de 2022
Torsten
el 27 de En. de 2022
You set
R(j) = something
in your code.
This will produce an error because "something" is not a single value, but either a vector or undefined.
I can't test it at the moment, but maybe you can try size(something).
shiv gaur
el 27 de En. de 2022
shiv gaur
el 27 de En. de 2022
Torsten
el 27 de En. de 2022
What does size(something) reveal ?
shiv gaur
el 27 de En. de 2022
Torsten
el 27 de En. de 2022
I did not mean size(R), but size(((Mtot(1,1)+Mtot(1,2).*q3).*q1 ...)
shiv gaur
el 27 de En. de 2022
Torsten
el 27 de En. de 2022
What is M ?
Can't you just add the line
size(expression)
in the for loop and tell me what Matlab prints to console ?
shiv gaur
el 27 de En. de 2022
shiv gaur
el 27 de En. de 2022
shiv gaur
el 27 de En. de 2022
Categorías
Más información sobre Graphics Performance en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!