www.gusucode.com > rf 工具箱matlab源码程序 > rf/abcdparameters.m
classdef abcdparameters < rf.internal.netparams.VoltageCurrentParameters %abcdparameters Create an ABCD-parameters Object % OBJ = abcdparameters(FILENAME) creates the abcdparameters object OBJ % from the file specified by FILENAME. FILENAME must describe a % Touchstone (*.snp, *.ynp, etc) file. The data will be converted from % the file type (S, Y, etc...) to ABCD-parameters. All data is stored in % real/imag format. % % OBJ = abcdparameters(ABCD_OBJ) creates a deep copy of another % abcdparameters object ABCD_OBJ. % % OBJ = abcdparameters(RFTBX_OBJ) extracts the network data in RFTBX_OBJ % and then converts it into ABCD-parameter data. RFTBX_OBJ can have the % following types: sparameters, tparameters, yparameters, zparameters, % hparameters, gparameters, rfdata.data, rfdata.network, and any analyzed % rfckt type. % % OBJ = abcdparameters(PARAMDATA,FREQ) creates an abcdparameters object % directly from specified data. PARAMDATA is required and will be stored % in the "Parameters" property. FREQ is required and will be stored in % the "Frequencies" property. % %PROPERTIES: % Parameters - A 2Nx2NxK complex array describing 2Nx2N ABCD-parameter % data for each frequency in the Frequencies property. Note that % size(obj.Parameters,3) must equal length(obj.Frequencies) % % Frequencies - A Kx1 vector of positive, real, increasing values. It % describes the frequencies (in Hz) the ABCD-parameters were measured at. % %EXAMPLES: % % Read a file 'default.s2p' as ABCD-parameters % abcd = abcdparameters('default.s2p'); % % % Extract 'A' % A = rfparam(abcd,'A'); % % See also rfparam, smith, rfwrite, sparameters, tparameters, yparameters, % zparameters, hparameters, gparameters properties(Constant,Access = protected) TypeFlag = 'ABCD' end methods function data = rfparam(obj,varargin) narginchk(2,3) if nargin == 2 if obj.NumPorts > 2 % error('When using PARAM on ABCD-parameters, you can only specify an ''A'',''B'',''C'', or ''D'' flag for 2-port data sets') error(message('rf:abcdparameters:rfparam:FlagOnlyForTwoPort')) end [m,n] = obj.flag2MN(varargin{1}); else m = varargin{1}; n = varargin{2}; end data = obj.rfparam@rf.internal.netparams.VoltageCurrentParameters(m,n); end function obj = abcdparameters(varargin) obj = obj@rf.internal.netparams.VoltageCurrentParameters(varargin{:}); end end methods(Static,Access = protected) function [m,n] = flag2MN(flag) switch lower(flag) case 'a' m = 1; n = 1; case 'b' m = 1; n = 2; case 'c' m = 2; n = 1; case 'd' m = 2; n = 2; otherwise % error('Unrecognized flag %s. ABCD flag must be ''A'',''B'',''C'', or ''D''.', flag) error(message('rf:abcdparameters:flag2MN:BadFlag',flag)) end end function validateParameters(newParam) rf.internal.netparams.validate2NPortParameters(newParam,'abcdparameters') end function outdata = convert2me(str,indata,z0) switch lower(str(1)) case 's' outdata = s2abcd(indata,z0); case 't' outdata = t2s(indata); outdata = s2abcd(outdata,z0); case 'y' outdata = y2abcd(indata); case 'z' outdata = z2abcd(indata); case 'h' outdata = h2abcd(indata); case 'g' outdata = g2h(indata); outdata = h2abcd(outdata); case 'a' outdata = indata; end end end methods(Hidden,Access = protected) function str = calculateLegendText(obj,row,col) %#ok<INUSL> lookuptbl = ['AB';'CD']; str = lookuptbl(row,col); end function str = customFooter(obj) if obj.NumPorts == 2 str = sprintf('(obj,specifier) returns specified ABCD-parameter ''A'', ''B'', ''C'', or ''D'''); else str = sprintf('(obj,i,j) returns the (i,j)th entry of ABCD-parameter obj'); end end end methods(Static,Hidden) function outobj = loadobj(in) data = in.Parameters; freq = in.Frequencies; outobj = abcdparameters(data,freq); end end end