Rlc2abcd.m
上传用户:eighthdate
上传日期:2014-05-24
资源大小:270k
文件大小:3k
源码类别:

其他行业

开发平台:

Matlab

  1. % This function returns the pi model's parameters and ABCD constants
  2. % when r, l, c and f are specified.
  3. %
  4. % Copyright (C) 1998 by H. Saadat.
  5. function [Z, Y, ABCD] = rlc2abcd(r, L, C, g, f, Length);
  6. global resp model par1 par2 linelngt freq
  7. par1=1;
  8. if exist('r')~=1
  9. r = input('Enter line resistance in ohms per unit length, r = '); else end
  10. if exist('L')~=1
  11. L = input('Enter line inductance in millihenry per unit length, L = ');else end
  12. if exist('C')~=1
  13. C = input('Enter line capacitance in microfarad per unit length, C = '); else end
  14. if exist('g')~=1
  15. g = input('Enter line conductance in siemens per unit length, g = '); else end
  16. if exist('f')~=1
  17. f = input('Enter Frequency in Hz = '); freq=f; else end
  18. if exist('Length')~=1
  19. Length = input('Enter Line length = '); linelngt=Length; else end
  20.    model =-1;
  21.    z =  r + j*2*pi*f*L/1000; ; Z = z*Length;
  22.    R = real(Z); X = imag(Z);
  23.    y = g + j*2*pi*f*C/1000000;
  24.    Y = y*Length;
  25. if g== 0 & C==0
  26.       fprintf ('n'), disp(' Short line model')
  27.       disp(' ----------------')
  28.       fprintf('n')
  29.       fprintf(' Z = %g + j ',real(Z)),  fprintf('%g ohmsn',imag(Z)),
  30.       Y = 0 + j*0; Zc = 0;
  31. else
  32.    Zc = sqrt(Z/Y); Gamal=sqrt(Z*Y);
  33.    while model ~=1 & model~=2
  34.    model = input('Enter 1 for Medium line or 2 for long line --> ');
  35.     if model ~=1 & model~=2
  36.     disp(' Enter 1 or 2'), else, end
  37. end
  38.   if model==2
  39.       Z = Zc*sinh(Gamal);  Y = 2*tanh(Gamal/2) /Zc;
  40.   else, end
  41.    if model==1,  disp(' '),  disp(' Nominal pi model'),
  42.       disp(' ----------------')
  43.       fprintf('n'), fprintf(' Z = %g + j ',R), fprintf('%g ohmsn',X),
  44.       fprintf(' Y = %g + j ',real(Y)), fprintf('%g Siemensn',imag(Y))
  45.       elseif model==2, disp(' '), disp(' Equivalent pi model')
  46.       disp(' -------------------')
  47.       fprintf('n')
  48.       fprintf(' Z'' = %g + j ',real(Z)),  fprintf('%g ohmsn',imag(Z)),
  49.       fprintf(' Y'' = %g + j ',real(Y)),  fprintf('%g siemensn',imag(Y))
  50.       fprintf(' Zc  = %g + j ',real(Zc)), fprintf('%g ohmsn',imag(Zc))
  51.       fprintf(' alpha l  = %g neper', real(Gamal))
  52.       fprintf('    beta l = %g radian', imag(Gamal))
  53.       fprintf('   = %g鳿n', imag(Gamal*180/pi))
  54.       else, end,
  55. %end
  56. end
  57. if model == -1 | model ==1 |model ==2
  58.   %  A,B,C,D constants of line
  59.   A = 1 + Z*Y/2;  B = Z;
  60.   C = Y*(1 + Z*Y/4);  D = A;
  61.   ABCD = [A B; C D];
  62.   disp(' ')
  63.   fprintf('         %-11.5g + j', real(A)), fprintf(' %-11.5g', imag(A))
  64.   fprintf('   %-11.5g + j', real(B)), fprintf(' %-11.5g  n', imag(B))
  65.   fprintf(' ABCD =                                                             n')
  66.   fprintf('         %-11.5g + j', real(C)), fprintf(' %-11.5g', imag(C))
  67.   fprintf('   %-11.5g + j', real(D)), fprintf(' %-11.5g  n', imag(D))
  68.   fprintf(' n')
  69. else, fprintf(' You must enter 1 or 2. Try again n'), return, end