Red de conocimiento informático - Conocimiento de la instalación - Encuentre el programa del círculo de Smith (use MATLAB o VB o VC)

Encuentre el programa del círculo de Smith (use MATLAB o VB o VC)

%Victor Aprea Cornell University 27 de junio de 2002

%

% 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)

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;

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)

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)

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))

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)

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 ');

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));

Á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

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>

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

;