www.gusucode.com > rfblksmasks 工具箱matlab源码程序 > rfblksmasks/rfblksgeneralamplifier1.m
function varargout = rfblksgeneralamplifier1(block, action) %RFBLKSGENERALAMPLIFIER1 Mask function for the General Amplifier block. % Copyright 2006-2014 The MathWorks, Inc. % Always return an output mStr.emsg = ''; mStr.wmsg = ''; % If it is library, call the default setting if strcmpi(get_param(bdroot, 'BlockDiagramType'), 'library') if nargout>0 varargout{1} = mStr; end return end %************************************************************************** % Action switch -- Determines which of the callback functions is called %************************************************************************** switch(action) case 'rfInit' % Find dialog dialog = rfblksfinddialog(block); % Set index to mask parameters idxMaskNames = rfblksgetblockmaskparamsindex(block); % Get the block parameters from_data_source = 'Determined from data source'; Vals = get_param(block, 'MaskValues'); if strcmp(Vals{idxMaskNames.DataSource}, 'Data file') && ... strncmpi(Vals{idxMaskNames.File}, 'default', 7) && ... isempty(dialog) && ~isnewmodel(6.6) set_param(block, 'DataSource', 'RFDATA object') Vals = get_param(block, 'MaskValues'); end En = get_param(block, 'MaskEnables'); if ~isempty(dialog) En{idxMaskNames.RFDATA} = isenabledondialog(dialog, 'RFDATA'); En{idxMaskNames.File} = isenabledondialog(dialog, 'File'); En{idxMaskNames.Freq} = isenabledondialog(dialog, 'Freq'); En{idxMaskNames.SourcePin} = isenabledondialog(dialog,'SourcePin'); En{idxMaskNames.Pin} = isenabledondialog(dialog, 'Pin'); En{idxMaskNames.IP3Type} = isenabledondialog(dialog, 'IP3Type'); En{idxMaskNames.IIP3} = isenabledondialog(dialog, 'IIP3'); En{idxMaskNames.OIP3} = isenabledondialog(dialog, 'OIP3'); En{idxMaskNames.P1dB} = isenabledondialog(dialog, 'P1dB'); En{idxMaskNames.PSat} = isenabledondialog(dialog, 'PSat'); En{idxMaskNames.GCSat} = isenabledondialog(dialog, 'GCSat'); En{idxMaskNames.NonlinearDataFreq} = ... isenabledondialog(dialog, 'NonlinearDataFreq'); En{idxMaskNames.NoiseDefinedBy} = ... isenabledondialog(dialog, 'NoiseDefinedBy'); En{idxMaskNames.NF} = isenabledondialog(dialog, 'NF'); En{idxMaskNames.FMIN} = isenabledondialog(dialog, 'FMIN'); En{idxMaskNames.GammaOpt} = isenabledondialog(dialog, 'GammaOpt'); En{idxMaskNames.RN} = isenabledondialog(dialog, 'RN'); En{idxMaskNames.NFactor} = isenabledondialog(dialog, 'NFactor'); En{idxMaskNames.NTemp} = isenabledondialog(dialog, 'NTemp'); En{idxMaskNames.NoiseDataFreq} = ... isenabledondialog(dialog, 'NoiseDataFreq'); En{idxMaskNames.PlotZ0} = isenabledondialog(dialog, 'PlotZ0'); En{idxMaskNames.YOption} = isenabledondialog(dialog, 'YOption'); En{idxMaskNames.XOption} = isenabledondialog(dialog, 'XOption'); else En(~strcmp(Vals, from_data_source)) = {'on'}; switch Vals{idxMaskNames.DataSource} case 'RFDATA object' En{idxMaskNames.File} = 'off'; En{idxMaskNames.RFDATA} = 'on'; case 'Data file' En{idxMaskNames.RFDATA} = 'off'; En{idxMaskNames.File} = 'on'; end if strcmpi(Vals{idxMaskNames.IP3Type}, 'IIP3') En{idxMaskNames.IIP3} = 'on'; En{idxMaskNames.OIP3} = 'off'; else % OIP3 is selected En{idxMaskNames.IIP3} = 'off'; En{idxMaskNames.OIP3} = 'on'; end switch Vals{idxMaskNames.NoiseDefinedBy} case 'Noise figure' En{idxMaskNames.FMIN} = 'off'; En{idxMaskNames.GammaOpt} = 'off'; En{idxMaskNames.RN} = 'off'; En{idxMaskNames.NF} = 'on'; En{idxMaskNames.NFactor} = 'off'; En{idxMaskNames.NTemp} = 'off'; case 'Spot noise data' En{idxMaskNames.NF} = 'off'; En{idxMaskNames.FMIN} = 'on'; En{idxMaskNames.GammaOpt} = 'on'; En{idxMaskNames.RN} = 'on'; En{idxMaskNames.NFactor} = 'off'; En{idxMaskNames.NTemp} = 'off'; case 'Noise factor' En{idxMaskNames.FMIN} = 'off'; En{idxMaskNames.GammaOpt} = 'off'; En{idxMaskNames.RN} = 'off'; En{idxMaskNames.NF} = 'off'; En{idxMaskNames.NFactor} = 'on'; En{idxMaskNames.NTemp} = 'off'; case 'Noise temperature' En{idxMaskNames.FMIN} = 'off'; En{idxMaskNames.GammaOpt} = 'off'; En{idxMaskNames.RN} = 'off'; En{idxMaskNames.NF} = 'off'; En{idxMaskNames.NFactor} = 'off'; En{idxMaskNames.NTemp} = 'on'; end switch Vals{idxMaskNames.SourceFreq} case 'User-specified' En{idxMaskNames.Freq} = 'on'; otherwise En{idxMaskNames.Freq} = 'off'; end switch Vals{idxMaskNames.SourcePin} case 'User-specified' En{idxMaskNames.Pin} = 'on'; otherwise En{idxMaskNames.Pin} = 'off'; end switch Vals{idxMaskNames.AllPlotType} case {'X-Y plane'} En{idxMaskNames.YOption} = 'on'; En{idxMaskNames.XOption} = 'on'; otherwise En{idxMaskNames.YOption} = 'off'; En{idxMaskNames.XOption} = 'off'; end En(strcmp(Vals, from_data_source)) = {'off'}; end set_param(block, 'MaskEnables', En); Udata = get_param(block, 'UserData'); % Create User Data if isempty(Udata) || ~isfield(Udata, 'Ckt') Udata.Version = 1.0; Udata.Ckt = []; Udata.Tag = block; Udata.Parameters = {}; Udata.NumParameters = 0; Udata.PlotType = ''; Udata.PlotFormat = {}; Udata.XAxisName = ''; Udata.XFormat = ''; Udata.Plot = true; Udata.IsNewModel = true; set_param(block, 'UserData', Udata); end oldplotflag = true; if isfield(Udata, 'Plot') oldplotflag = Udata.Plot; % Save plot flag end lastwarn(''); if all(isfield(Udata, {'Filename', 'Date'})) oldFilename = Udata.Filename; oldDate = Udata.Date; else oldFilename = ''; oldDate = ''; end if all(isfield(Udata, {'RefSel'})) oldRefSel = Udata.RefSel; else oldRefSel = 0; end if isfield(Udata, 'Ckt') && isa(Udata.Ckt, 'rfckt.rfckt') ... && isvalid(Udata.Ckt) ... && isa(Udata.Ckt.AnalyzedResult, 'rfdata.data') ... && isvalid(Udata.Ckt.AnalyzedResult) ... && ~isempty(Udata.Ckt.AnalyzedResult.S_Parameters) oldParamList = listparam(Udata.Ckt); else oldParamList = {}; end try ckt = createrfcktfromblk(block); Udata = get_param(block, 'UserData'); Udata.Ckt = ckt; Udata.Tag = block; catch creatGENERALAMPException Udata = rfblksflagnoplot(block, Udata); if ismodelstopped errordlg([block ': ' creatGENERALAMPException.message], ... 'RF Blockset Error', 'on'); else mStr.emsg = creatGENERALAMPException.message; end end if ismodelstopped && ~isempty(lastwarn) warndlg([block ': ' lastwarn],'RF Blockset Warning', 'on'); else mStr.wmsg = lastwarn; end if all(isfield(Udata, {'Filename', 'Date'})) newFilename = Udata.Filename; newDate = Udata.Date; else newFilename = ''; newDate = ''; end if all(isfield(Udata, {'RefSel'})) newRefSel = Udata.RefSel; else newRefSel = 0; end if isfield(Udata, 'Ckt') && ... isa(Udata.Ckt, 'rfckt.rfckt') && isvalid(Udata.Ckt) newParamList = listparam(Udata.Ckt); else newParamList = {}; end if ~isempty(dialog) if oldplotflag ~= Udata.Plot % Refresh dialog if plot flag has changed dialog.refresh; elseif ~strcmp(newFilename,oldFilename) || ~strcmp(newDate,oldDate) dialog.refresh; elseif (strcmp(newFilename, oldFilename) && ... strcmp(newDate, oldDate) && ... newRefSel ~= oldRefSel) % Refresh dialog only when reference selection is changed dialog.refresh; elseif ~isequal(newParamList, oldParamList) % Refresh dialog when the list of plotting parameters changes dialog.refresh; end end Udata = get_param(block, 'UserData'); if all(isfield(Udata, {'NetworkData1', 'NetworkData2', ... 'ComplexFormat1', 'ComplexFormat2', 'XParameter', 'XFormat'})) set_param(block, 'AppliedNetworkData', Udata.NetworkData1, ... 'AppliedNetworkData2', Udata.NetworkData2, ... 'AppliedComplexFormat', Udata.ComplexFormat1, ... 'AppliedComplexFormat2', Udata.ComplexFormat2, ... 'AppliedXParameter', Udata.XParameter, ... 'AppliedXFormat', Udata.XFormat); end case 'rfDelete' deleterfblkfunc(block); case 'rfCopyFcn' copyrfblkfunc(block); case 'rfDefault' end if nargout>0 varargout{1} = mStr; end function result = isenabledondialog(dialog, tag) % Find out if the tagged widget on the dialog is enabled. if isEnabled(dialog, tag) result = 'on'; else result = 'off'; end