Encuentre el programa del círculo de Smith (use MATLAB o VB o VC)
%
% Uso: plotsmithchart(Zl, Zo)
% donde Zl es la impedancia de carga (posiblemente plural )
% y Zo son las impedancias de línea características
% traza el gráfico de Smith, y el círculo del coeficiente de reflexión
% y % cruzan la línea del componente de resistencia es igual 1.
% plotsmithchart
% traza un gráfico de Smith en blanco sin ningún parámetro.
Las longitudes de onda 1/4 hacia el generador están marcadas alrededor del perímetro
%
% Ejemplo: plotsmithchart(25,50)
%Dibuje un diagrama de Smith, calcule y trace el coeficiente de reflexión
Para una impedancia característica de 50 ohmios y una impedancia de carga de 25 ohmios,
% y trace la intersección con la R =1 círculo de alambre.
Función respuesta = plotSmithChart(Zl, Zo);
Constante = linspace(0, 10, 5);
phaseAngle = linspace(0, 2*); pi, 50);
unidad gamma = exp(j *ángulo de fase);
%Dibuja el círculo unitario en el plano complejo
Espera;
p>
plot(real(unitGamma), imag(unitGamma), ' r '
%set(gcf, 'Posición ', [0 0 1280 990]
Eje cuadrado
Acercar
Eje([-1.1.1.1-1.1.1]);
MAX = 2001;
encuadernado 2 = 0;
encuadernado 3 = 0;
min _ encuadernado 1 = 0;
min _ encuadernado 2 = 0;
max _ enlazado 2 = 0;
h = 0;
palabra = 0
Gr = linspace; (-1, 1, MAX);
Espera;
Intervalo=[. 01:. 0,55:.
intervalo 2 =[.
%Traza el eje real
plot(Gr, zeros(1, length(Gr)), ' r ');
%Las ecuaciones se hacen usando herramientas simbólicas exportadas desde el cuadro, como se muestra a continuación
%solve('r=(1-gr^2-gi^2)/((1-gr)^2+gi^2)', 'gi' )
La derivación de %bound es la siguiente
%solve('1/(r+1)*(-(r+1)*(r-2 *r*gr+r .*gr^2-1+gr^2))^(1/2)=0','gr')
Para R = intervalo2,
min _ enlazado 1 =(R-1)/(R+1);
if(R<.2)
if(mod(R,. 1)= =0)
max _ límite =(-1+2^2+r^2)/(2^2+r^2+2*r+1);
elseif(mod( R,. 02)==0)
max _ límite =(-1+.5^2+r^2)/(.5^2+r^2+2* r+1) ;
Otros
max _ enlazado =(-1+.2^2+r^2)/(.2^2+r^2+2* r+1) ;
if(R = = . 05 |(R & lt; 151 & amp; R & gt.149))
min _ enlazado 2 =(- 1+.5 ^2+r^2)/(.5^2+r^2+2*r+1);
max _ límite 2 =(-1+1^2+r ^2)/ (1^2+r^2+2*r+1);
Fin
Fin
else if(R & lt; 1)
p>if(mod(R,.. 2)==0)
max _ límite =(-1+5^2+r^2)/( 5^2+r^ 2+2*r+1);
elseif(mod(R,. 1)==0)
max _ límite =(-1+ 2^2+r^ 2)/(2^2+r^2+2*r+1);
elseif(R==.25 | R==.35 | R==. 45)
temp =(-1+.5^2+r^2)/(.5^2+r^2+2*r+1);
mín. _ límite 2 = max( min _ límite 1, temp
max _ límite =(-1+1^2+r^2)/(1^2+r^2+2*r); +1
p>si no(R<.5)
max _ límite =(-1+.5^2+r^2)/(.5^) 2+r^2+ 2*r+1);
Otros
max _ enlazado =(-1+1^2+r^2)/(1^2+ r^2+2* r+1);
Fin
si no(R & lt;5)
if(mod(R, 2) ==0) p>
max _ límite =(-1+20^2+r^2)/(20^2+r^2+2*r+1);
elseif(mod(R ,1)==0)
max _ límite =(-1+10^2+r^2)/(10^2+r^2+2*r+ 1);
de lo contrario si(R & gt; 2)
max _ límite =(-1+5^2+r^2)/(5^2+r^ 2+2*r+ 1);
Otros
if(mod(R,.. 2)==0)
max _ enlazado =(- 1+5^2 +r^2)/(
5^2+r^2+2*r+1);
Otros
max _ enlazado =(-1+2^2+r^2)/(2^ 2+r^2+2*r+1);
Fin
Fin
si no(R & lt; 10)
if(mod(R, 2)==0)
max _ límite =(-1+20^2+r^2)/(20^2+r^2+2*r +1);
Otros
max _ enlazado =(-1+10^2+r^2)/(10^2+r^2+2*r+1 );
Fin
Otros
if(R==10|R==20)
max _bound =(- 1+50^2+r^2)/(50^2+r^2+2*r+1);
Elsef (R==50)
max _ límite = 1;
de lo contrario si(R & lt; 20)
max _ límite =(-1+20^2+r^2)/(20^ 2+r ^2+2*r+1);
Otros
max _ enlazado =(-1+50^2+r^2)/(50^2+ r^2 +2*r+1);
Fin
Fin
index = ceil((min _ enlazado 1+1)*(MAX- 1)/ 2+1);
valor_actual = Gr(índice);
if(valor_real & lt;min_bound1)
índice = índice+ 1; p>
Fin
MIN = índice;
índice = techo((MAX _ enlazado+1)*(MAX-1)/2+1) ;
valor_actual = Gr(índice);
if(valor_actual & gt;max_bound)
índice = índice-1;
Fin
min 2 = techo((min _ límite 2+1)*(MAX-1)/2+1);
valor _ real = Gr(min 2 );
if(valor _ real & lt;min_bound2)
min 2 = min 2+1;
Fin
MAX 2 = techo((MAX _ enlazado 2+1)*(MAX-1)/2+1);
valor _ real = Gr(max 2);
if( valor _ real & lt; max_bound2)
max 2 = max 2+1;
Fin
R _ L _ a = 1/(R+1 )*(-(R +1)*(R-2 * R . * Gr(MIN:índice)+R . * Gr(MIN:índice). ^2-1+Gr(MIN:índice).^2)).^(1/2);
R _ L _ b =-1/(R+1)*(-(R +1)*(R-2 * R . * Gr(MIN:índice)+R . * Gr(MIN:índice).
^2-1+Gr(MIN:índice).^2)).^(1/2);
r _ L _ b(1)= 0;
r _ L _ a(1)= 0;
R _ L _ a2 = 1/(R+1)*(-(R+1)*(R-2 * R . * Gr(min 2:máx 2)+R . * Gr(mín 2:máx 2). ^2-1+Gr(MIN2:MAX2).^2)).^(1/2);
R. _ L _ B2 =-1/(R+1)*(-(R+1)*(R-2 * R . * Gr(mín 2:máx 2)+R . * Gr(mín 2:máx 2) . ^2-1+Gr(MIN2:MAX2).^2)).^(1/2);
R _ L _ a3 = 1/(R+1)*(-(R). +1)*(R-2 * R . * Gr(min 2:índice)+R.*Gr(MIN2:índice).^2-1+Gr(MIN2:índice).^2)).^(1 /2);
R _ L _ B3 =-1/(R+1)*(-(R+1)*(R-2 * R . * Gr(min 2:índice)+ R.*Gr(min 2:índice).
^2-1+Gr(MIN2:index).^2)).^(1/2);
%Se corrigió el problema de solución en el rango de 2-.5
If (~(R>. 2 & ampR & lt. 5 & amp~(mod(R,. 02)==0)))
Si (R==1) p>
color = ' r
Otro
color = ' b
Fin
plot(Gr(MIN:index), r_L_a(1:índice-MIN+1), color, Gr(MIN:índice), r_L_b(1:índice-MIN+1), color);
if(R<=1) p>
if(mod(R, 1)==0)
palabra =[num 2 str(R)' 0 ']
Otro
;palabra = num 2 str(R);
Fin
if(mod(R,. 1)== 0)
set(texto (Gr(MIN), 0, palabra), 'Rotación', 90, 'Alineación Horizontal', 'izquierda', 'Alineación Vertical, 'abajo'); (R<=2)
si(mod(R,.. 2)==0)
si( mod(R, 1)==0)
palabra =[num 2 str(R)' 0 '];
Otro
palabra = num 2 str(R);
Fin
set(text(Gr(MIN), 0, palabra), ' Rotación ', 90, ' HorizontalAlignment ', ' left ', ' VerticalAlignment , ' bottom ');
Fin
else if(R<=5)
if(mod(R, 1)==0)
set(text(Gr(MIN), 0, [num 2 str(R)' 0 ']), ' Rotación ', 90, ' HorizontalAlignment ', ' left ', ' VerticalAlignment ', ' bottom ');
Fin
Otros
if(mod(R, 10)==0)
set(text( Gr(MIN), 0, num2str(R)), ' Rotación ' , 90, ' HorizontalAlignment ', ' left ', ' VerticalAlignment ', ' bottom '
Fin
Fin
elseif(R==.25); | R==.35 | R==.45)
plot(Gr(MIN2:índice), r_L_a3, ' b ' );
plot(Gr(MIN2:índice) ), r_L_b3, ' b ');
Fin
if(R = = . 05 |(R & gt;. 149 & R & lt.151)) p>
plot(Gr(MIN2:MAX2), r_L_a2(longitud(Gr(min 2:max 2))-longitud (r _ L _ a2)+1:longitud(r _ L _ a2)), ' b ');
trama(Gr(MIN2:
MAX2), r _ L _ B2(longitud(Gr(min 2:max 2))-longitud(r _ L _ B2)+1:longitud(r _ L _ B2)), ' b '); >
Fin
Fin
La ecuación % se exporta usando la Caja de herramientas de símbolos, como se muestra a continuación
%solve('2*gi/(( 1-gr)^2+gi^2)=x','gi')
La derivación de %bound es la siguiente
%solve('1-x^2 +2* x^2*gr-x^2*gr^2=0','gr')
%solve('1/2/x*(2+2*(1-x ^2+ 2*x^2*gr-x^2*gr^2)^(1/2))=(1-gr^2)^(1/2)','gr')
Para
imag_bound = (-1+X)/X;%imagine border: todos los valores deben ser mayores que este valor
angle_point = 0;
if (inter_bound ~= 0)
Angle_point = sqrt(1-inter_bound^2)/inter_bound;
Fin
imag _ enlazado _ y = 1 /2/x*(-2+2*(1-x^2+2*x^2.*inter_bound-X^2.*Encuadernación interna.
^2).^(1/2));
imag_rad =(imag_bound^2+imag_bound_y^2)^(1/2);
condición = imag_ rad & lt1;
si(inter _ enlazado & gt; 1)
inter _ enlazado = 1;
si no(inter _ enlazado & lt; -1)
imag_bound =-1
Fin
if(imag_bound> 1)
imag _ enlazado = 1;
else if(imag _ enlazado & lt; -1)
imag _ enlazado =-1
Fin
%Utiliza la función de resolución para encontrar la intersección del círculo apropiado y la hipérbola correspondiente
%solve('-1/(r+1)*(-(r+1)*(r -2* r*gr+r*gr^2-1+gr^2))^(1/2)=1/2/x*(-2+2*(1-x^2+2*x^ 2*gr -x^2*gr^2)^(1/2))','gr')
%El siguiente árbol condicional crea un límite interno entre dos tipos de curvas para resolución variable
p>if(X<.2)
if(mod(X,. 1)==0)
max_bound =(-1+x ^ 2+2^2)/(x^2+2^2+2*2+1);
elseif(mod(X,. 02)==0)
max _bound =(-1+x^2+.5^2)/(x^2+.5^2+2*.5+1);
Otros
max _ enlazado =(-1+x^2+.2^2)/(x^2+.2^2+2*.2+1);
Fin
else if(X<1)
if(mod(X,. 2)==0)
max _ límite =(-1+x^2 +5^ 2)/(x^2+5^2+2*5+1);
elseif(mod(X,. 1)==0)
max _ enlazado = (-1+x^2+2^2)/(x^2+2^2+2*2+1);
si no(X & lt;.5)
max _bound =(-1+x^2+.5^2)/(x^2+.5^2+2*.5+1);
Otros
max _ enlazado =(-1+x^2+1^2)/(x^2+1^2+2*1+1);
Fin
p); >si no(X<5)
si(mod(X, 2)==0)
max _ límite =(-1+x^ 2+20 ^2)/(x^2+20^2+2*21);
elseif(mod(X, 1)==0)
max _ límite = (-1+x^2+10^2)/(x^2+10^2+2*11);
si no (X & gt; 2) p>
max _ enlazado =(-1+x^2+5^2)/(x^2+5^2+2*5+1);
Otros
if(mod(X,. 2)==0)
max _ límite =(-1+x^2+5^2)/(x^2+5^2+2 *5+ 1);
Otros
max _ enlazado =(-1+x^2+2^2)/(x^2+2^2+2*2 +1) ;
Fin
Fin<
/p>
else if(X <10)
if(mod(X, 2)==0)
max _ enlazado =(-1+x ^ 2+20^2)/(x^2+20^2+2*21);
Otros
max _ enlazado =(-1+x^2 + 10^2)/(x^2+10^2+2*11);
Fin
Otros
if(X== 10 |X==20)
max _ límite =(-1+x^2+50^2)/(x^2+50^2+2*51);
si no(X==50)
max_limitado=1
si no(X & lt; 20)
max_limitado; =(-1+x^2+20^2)/(x^2+20^2+2*21);
Otros
max _ enlazado =( -1+x^2+50^2)/(x^2+50^2+2*51);
Fin
Fin
inter _ index = ceil((inter _ encuadernado+1)*(MAX-1)/2+1);
imag _ index = ceil((imag _ encuadernado+1)* (MAX- 1)/2+1);
índice 4 = techo((MAX _ enlazado+1)*(MAX-1)/2+1);
índice1 = máx( inter_index, imag _ index); El porcentaje de índice máximo de c, d
index2 = min(imag_index, inter _ index); El porcentaje de índice mínimo de c, d
If ( Condición)
index3 = imag_index
Otro
index3 = inter_index
Fin
actual_value1 = Gr(índice 1);
valor_actual2 = Gr(índice 2
valor_actual3 = Gr(índice 3
valor_actual4 = Gr(índice 4); );
if((valor _ real 1 & gt; inter _ enlazado & ampindex1 == inter_index)|(valor real 1 & gt; imag _ enlazado & ampindex1 == imag_index))
índice 1 = índice 1-1;
Fin
if((actual _ valor 2 & lt; inter _ enlazado & ampindex 2 = = inter _ index)| ( valor _ real 2 & lt; imag _ enlazado & ampindex2 == imag_index))
índice 2 = índice 2+1;
Fin
if( ( valor_actual 3 & lt; inter_bound & ampindex3 == inter_index)|(valor_actual 3 & lt; imag_bound & ampindex3 == imag_index))
índice 3 = índice 3 +1;
Fin
if(actual _ valor 4 & gt; max_bound
)
índice 4 = índice 4-1;
Fin
MIN = índice2
max 2 = índice 1;
MAX3 = índice4
MIN2 = índice3
% valor_real 1 = Gr(MIN);
% valor_real 2 = Gr( máx 2);
% MIN = 1;
% MAX2 = MAX
% mín 2 = 1;
x _ l _ a = real(1/2/x*(-2+2*(1-x^2+2*x^2.*Gr(MIN2:MAX3)-X^2.*Gr(MIN2:MAX3). ^2).^(1/2)));
x _ l _ b = real(1/2/x*(2-2*(1-x^2+2* x^ 2.*Gr(MIN2:MAX3)-X^2.*Gr(MIN2:MAX3) ^2).^(1/2)));
real(1/ 2/x*( 2+2*(1-x^2+2*x^2.*Gr(MIN:MAX2)-X^2.*Gr(MIN:MAX2).^2).^ (1/2)));
x _ l _ d = real(1/2/x*(-2-2*(1-x^2+2*x^2.*Gr (MIN:MAX2)-X^ 2.*Gr(MÍN:MÁX2).
^2).^(1/2)));
si(mín 2 & lt;máx 3)
x _ L _ c(1)= x _ L _ b(1);
x _ L _ d(1) = x _ L _ a(1);
Fin
comprobar 1 = abs( round(10000*1/2/x*(-2-2*(1-x^2+2*x^2*inter_bound-x^2*inter_bound^2)^(1/2)))));
comprobar 2 = abs(round(10000*(1-inter_bound^2)^(1/2)));
if(imag _bound & gt; -1 & amp;1 == check2)
plot(Gr(min:max2), x_L_c, 'g')
plot(Gr(min:max2) , x_L_d, ' g ' )
Fin
plot(Gr(MIN2:MAX3), x_L_a, ' g ')
plot(Gr(MIN2: MAX3), x_L_b, ' g ')
Condición = gr(min2)^2+x_l_d(1)^2 & gt;.985;
if(X & lt; =1)
if(mod(X,. 1)==0)
if(mod(X, 1)==0)
palabra =[num 2 str( X)' 0 '];
Otro
palabra = num 2 str(X);
Fin
Si (X= =1)
Ángulo = 90°;
Otro
Ángulo=-atan(ángulo _ punto)* 180/pi
Fin
set(text(Gr(MIN2),x_L_d(1),word),'Rotation',angle,'VerticalAlignment','bottom,'HorizontalAlignment',' left '); p>
set(text(Gr(MIN2),-x_L_d(1),word),'Rotation',-angle+180,'HorizontalAlignment','right','VerticalAlignment', 'bottom');
if(mod(X,. 2)==0)
xval=x^2/(x^2+4);
yval = 1 /2/x*(-2+2*(1-x^2+2*x^2*xval-x^2*xval^2)^(1/2)); p>
Ángulo =-atan(yval/(. 5-xval))* 180/pi;
set(text(xfal, yval, word), 'Rotación ', ángulo, 'Alineación Horizontal ', 'izquierda', ' VerticalAlignment ', ' bottom ');
set(text(xfal, -yval, word), ' Rotation ', -angle+180, ' HorizontalAlignment ', ' right ' , ' VerticalAlignment ', ' inferior ')
Fin
Fin
else if(X<=2)
if (mod(X,. 2) ==0)
si (mod(X, 1)==0)
palabra =[núm
2 str(X)' 0 '];
Otro
palabra = num 2 str(X);
Fin
Si (Condición)
Ángulo=-atan(ángulo _ punto)* 180/pi+180;
set(text(Gr(MIN2),x_L_a(1),palabra), 'Rotación',ángulo,'AlineaciónVertical','bottom,'AlineaciónHorizontal','izquierda');
set(text(Gr(MIN2),-x_L_a(1),palabra),'rotación' , -angle+180,'HorizontalAlignment','right','VerticalAlignment','bottom');
Otros
Angle=-atan(angle _ point)* 180/ pi+180;
set(text(Gr(MAX2),x_L_d(length(x_L_d)),word),'Rotation',angle,'VerticalAlignment','bottom','HorizontalAlignment',' left ');
set(text(Gr(MAX2),-x_L_d(length(x_L_d)),word),'Rotation',-angle+180,'HorizontalAlignment','right',' VerticalAlignment ', 'bottom');
Fin
Fin
else if(X<=5)
if( mod( X, 1)==0)
Si (condición)
Ángulo=-atan(ángulo _ punto)* 180/pi+180;
establecer (text(Gr(MIN2),x_L_a(1),[num 2 str(X)' 0 ']),'Rotation',angle,'VerticalAlignment','bottom','HorizontalAlignment,'left'); p>
set(text(Gr(MIN2), -x_L_a(1), [num 2 str(X)' 0 ']), 'Rotación', -angle+180, 'Alineación Horizontal', 'derecha', ' VerticalAlignment ', 'bottom');
Otros
Angle=-atan(angle _ point)* 180/pi+180
set (texto) (Gr(MAX2),x_L_d(longitud(x_L_d)),[num 2 str(X)' 0 ']),'Rotación',ángulo,'Alineación vertical','abajo','Alineación horizontal','izquierda');
set(text(Gr(MAX2),-x_L_d(length(x_L_d)),[num 2 str(X)' 0 ']),' Rotación ',-ángulo+180,' Alineación Horizontal ' , ' right ', ' VerticalAlignment ', ' bottom ');
Fin
Fin
Es
él
if(mod(X, 10)==0)
si (condición)
ángulo=-atan(ángulo _ punto)* 180/ pi+180;
set(text(Gr(MIN2),x_L_a(1),num2str(X),'Rotación',ángulo,'Alineación vertical','abajo','Alineación horizontal','izquierda ');
set(text(Gr(MIN2),-x_L_a(1),num2str(X),'Rotación',-ángulo+180,'AlineaciónHorizontal','derecha','AlineaciónVertical, ' inferior ');
Otros
Ángulo=-atan(ángulo _ punto)* 180/pi+180;
set(text(Gr(MAX2 ), x_L_d(longitud(x_L_d)), num2str(X)), 'Rotación ', ángulo, ' Alineación vertical ', 'abajo', 'Alineación horizontal ', ' izquierda ');
set(text( Gr(MAX2), -x_L_d(length(x_L_d)), num2str(X)), ' Rotación ', -angle+180, ' HorizontalAlignment ', ' right ', ' VerticalAlignment ', 'bottom');
Fin
Fin
Fin
Fin
% dibuja el eje imaginario
plot(cero ( 1, longitud (Gr)), Gr, ' r ');
Longitud de onda = 0.01.5
Ángulo = linspace(pi, -pi, longitud (longitud de onda)) ;
wave_circle = 1.05 * exp(j * ángulo de fase)
plot(real(wave_circle), imag(wave_circle), ' r ');
Para i=1: longitud (longitud de onda)-1,
x = real(1.025 * exp(j * ángulo(I)));
y = imag( 1.025 * exp(j * ángulo(I)));
if(x & gt; 0)
rot _ ángulo = atan(y/x)* 180/pi- 90 ;
Otro
rot _ ángulo = atan(y/x)* 180/pi+90;
Fin
Si ( Longitud de onda(i)==0)
palabra = ' 0.00
elseif(mod(Longitud de onda(I),. 1)==0)
palabra = [num2str(longitud de onda(I))' 0 '];
Otros
palabra = num2str(longitud de onda(I));
Fin p >
set(text(x, y, palabra), 'Rotación', rot_angle, 'VerticalAlignment', 'middle', 'HorizontalAlignment', 'center');
Fin
%Solo cuando el parámetro existe, dibuja el coeficiente de reflexión y la línea de intersección
if(nargin == 2)
radio = ABS((Zl-Zo)/(Zl+Zo));
carga _ círculo = radio * exp(j * ángulo de fase);
plot(real(Load_circle ), imag(Load_circle), ' r ');
Pendiente=(-(1-radio^2)^(1/2)*radio)/(radio^2);
valor=1/(1+pendiente^2)^(1/2);
MAX2 = techo((valor+1)*(MAX-1)/2+1);
valor _ real = Gr(max 2);
if(valor _ real & gt; valor)
max 2 = max 2-1; p>
p>
Fin
% de líneas de trazado que se cruzan
línea = pendiente * Gr(fix(MAX/2):MAX 2);
plot (Gr(fix(MAX/2):MAX2), línea, ' r '
Fin
;