⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 wcdmaphlayerinitmask.m

📁 WCDMA model in symulink model in matlab
💻 M
📖 第 1 页 / 共 2 页
字号:
function varargout = WcdmaPhLayerInitMask(block, action, varargin)

s = 'WcdmaPhLayerInitMask';

%**************************************************************************
% --- Action switch -- Determines which of the callback functions is called
%**************************************************************************
switch(action)
    
%*********************************************************************
% Function Name:     init
% Description:       Main initialization code
%********************************************************************
case 'init'
    
    % --- Set Init Values
    eStr = setInitValues(block);
       
    % --- Return without error
    varargout{1} = eStr;

%*********************************************************************
% Function Name:     cbShowTrCh
% Description:       
%********************************************************************    
case 'cbShowTrCh'
    
    % -- Get variables from mask
    En   = get_param(block, 'MaskEnables');
    Vis  = get_param(block, 'MaskVisibilities');
    Vals = get_param(block, 'MaskValues');
    
    % -- Set Index to Mask parameters
    setfieldindexnumbers(block);
    
    % -- Set Visibilities
    switch(Vals{idxShowTrCh})
        
    case 'on' %User Defined : All options enable and visible
        if(strcmp(Vals{idxMeasurChannel},'User Defined'))
            
            idxOn = [idxMeasurChannel idxTrBlkSetSize idxTrBlkSize idxTti idxCrcSize idxErrorCorr ...
                    idxRMAttribute idxPosTrChMask idxNumPhCH idxSlotFormat];
                
            [En{idxOn}, Vis{idxOn}]  = deal('on');
                
        else % Predefined Cases : All options are visible but only Measurement channel is enable
            idxEnOff = [idxTrBlkSetSize idxTrBlkSize idxTti idxCrcSize idxErrorCorr ...
                        idxRMAttribute idxPosTrChMask idxNumPhCH idxSlotFormat];
            idxVisOn = [idxMeasurChannel idxEnOff];
                    
            [En{idxMeasurChannel}, Vis{idxVisOn}]  = deal('on');
            [En{idxEnOff}]  = deal('off');
        end
                
    case 'off'
        
        idxOff = [idxMeasurChannel idxTrBlkSetSize idxTrBlkSize idxTti idxCrcSize idxErrorCorr ...
                    idxRMAttribute idxPosTrChMask idxNumPhCH idxSlotFormat];
                
        [En{idxOff}, Vis{idxOff}]  = deal('off');
    end
    
    % --- Update parameters
    set_param(block,'MaskVisibilities', Vis, 'MaskEnables', En);

%*********************************************************************
% Function Name:     cbMeasurChannel
% Description:       Depending on the variable measurChannel,
%                       preloads variables according to the 3GPP TS 25.101 specs. 
% Return Values:     None
%********************************************************************
case 'cbMeasurChannel'   
    
    % -- Get variables from mask
    Vals = get_param(block, 'maskvalues');
    En   = get_param(block, 'MaskEnables');
    Vis  = get_param(block, 'MaskVisibilities');

    % -- Set Index to Mask parameters
    setfieldindexnumbers(block);
    
    % -- Set visibilities
    idxEn  = [idxTrBlkSetSize idxTrBlkSize idxTti idxCrcSize idxErrorCorr ...
            idxRMAttribute idxPosTrChMask idxNumPhCH idxSlotFormat];
        
    [En{idxEn}]  = deal('off');
        
    % -- Preload parameters
    switch(Vals{idxMeasurChannel})
        
    case '12.2 Kbps'
                
        Vals{idxTrBlkSetSize}    = '[244 100]';
        Vals{idxTrBlkSize}       = '[244 100]';
        Vals{idxTti}             = '[20 40]';
        Vals{idxCrcSize}         = '[16 12]';
        Vals{idxErrorCorr}       = '[2 2]';
        Vals{idxRMAttribute}     = '[256 256]';
        Vals{idxPosTrChMask}     = 'Fixed';
        Vals{idxNumPhCH}         = '1'; 
        Vals{idxSlotFormat}      = '11';        
        Vals{idxDpchCode}        = '127';
        
        
    case '64 Kbps'
        
        Vals{idxTrBlkSetSize}    = '[1280 100]';
        Vals{idxTrBlkSize}       = '[1280 100]';
        Vals{idxTti}             = '[20 40]';
        Vals{idxCrcSize}         = '[16 12]';
        Vals{idxErrorCorr}       = '[3 2]';
        Vals{idxRMAttribute}     = '[256 256]';
        Vals{idxPosTrChMask}     = 'Fixed';
        Vals{idxNumPhCH}         = '1'; 
        Vals{idxSlotFormat}      = '13';
        Vals{idxDpchCode}        = '31';
        
        
    case '144 Kbps'

        Vals{idxTrBlkSetSize}    = '[2880 100]';
        Vals{idxTrBlkSize}       = '[2880 100]';
        Vals{idxTti}             = '[20 40]';
        Vals{idxCrcSize}         = '[16 12]';
        Vals{idxErrorCorr}       = '[3 2]';
        Vals{idxRMAttribute}     = '[256 256]';
        Vals{idxPosTrChMask}     = 'Fixed';
        Vals{idxNumPhCH}         = '1'; 
        Vals{idxSlotFormat}      = '14';
        Vals{idxDpchCode}        = '15';        
       
    case '384 Kbps'

        Vals{idxTrBlkSetSize}    = '[3840 100]';
        Vals{idxTrBlkSize}       = '[3840 100]';
        Vals{idxTti}             = '[10 40]';
        Vals{idxCrcSize}         = '[16 12]';
        Vals{idxErrorCorr}       = '[3 2]';
        Vals{idxRMAttribute}     = '[256 256]';
        Vals{idxPosTrChMask}     = 'Fixed';
        Vals{idxNumPhCH}         = '1'; 
        Vals{idxSlotFormat}      = '15';
        Vals{idxDpchCode}        = '7';
            
    case 'User Defined'     
        % -- Update the Mask Parameters
        [En{idxEn}]  = deal('on');
            
    end
    set_param(block,'MaskValues',Vals,'MaskVisibilities', Vis, 'MaskEnables', En);
    

%*********************************************************************
% Function Name:     cbShowAntenna
% Description:       
%********************************************************************    
case 'cbShowAntenna'
    
    % -- Get variables from mask
    En   = get_param(block, 'MaskEnables');
    Vis  = get_param(block, 'MaskVisibilities');
    Vals = get_param(block, 'MaskValues');
    
    % -- Set Index to Mask parameters
    setfieldindexnumbers(block);
    
    % -- Set Visibilities
    switch(Vals{idxShowAntenna})
        
    case 'on'
        idxOn = [idxDpchCode idxScrCode idxNumTapsRRC idxNumTapsChEst idxOverSampling];
        [En{idxOn}, Vis{idxOn}]  = deal('on');
        
    case 'off'
        idxOff = [idxDpchCode idxScrCode idxNumTapsRRC idxNumTapsChEst idxOverSampling];
        [En{idxOff}, Vis{idxOff}]  = deal('off');        
    end
    
    % --- Update parameters
    set_param(block,'MaskVisibilities', Vis, 'MaskEnables', En);
        
%*********************************************************************
% Function Name:     cbShowChModel
% Description:       
%********************************************************************    
case 'cbShowChModel'
    
    % -- Get variables from mask
    En   = get_param(block, 'MaskEnables');
    Vis  = get_param(block, 'MaskVisibilities');
    Vals = get_param(block, 'MaskValues');
    
    % -- Set Index to Mask parameters
    setfieldindexnumbers(block);
    
    % -- Set Visibilities
    switch(Vals{idxShowChModel})
        
    case 'on'
        
        if(strcmp(Vals{idxPropConditions},'No Channel')) 
            % All options are visible but disable
            idx = [idxFingerPhases idxFingerPowers idxFingerEnables idxSpeed idxSnrdB];
            [Vis{[idx idxPropConditions]}, En{idxPropConditions}]  = deal('on');
            [En{idx}]  = deal('off');

        elseif(strcmp(Vals{idxPropConditions},'User Defined')) 
            % All options are visible and enable
            idxOn = [idxPropConditions idxFingerPhases idxFingerPowers idxFingerEnables idxSpeed idxSnrdB];
            [En{idxOn}, Vis{idxOn}]  = deal('on');
        else
            % All options are visible but only idxPropConditions and snrdB is enable
            idx = [idxFingerPhases idxFingerPowers idxFingerEnables idxSpeed];
            [En{[idxPropConditions idxSnrdB]}, Vis{[idxPropConditions idxSnrdB idx]}]  = deal('on');
            [En{idx}]  = deal('off');
        end
        
    case 'off'
        idxOff = [idxPropConditions idxFingerPhases idxFingerPowers idxFingerEnables idxSpeed idxSnrdB];
        [En{idxOff}, Vis{idxOff}]  = deal('off');        
    end
    
    % --- Update parameters
    set_param(block,'MaskVisibilities', Vis, 'MaskEnables', En);
        
%************************************************************************
% Function Name:     cbPropConditions
% Description:       Sets Multipath Profiles according to specifications
%************************************************************************    
case 'cbPropConditions'
    
    % -- Get variables from mask
    Vals = get_param(block, 'maskvalues');
    En   = get_param(block, 'MaskEnables');
    Vis  = get_param(block, 'MaskVisibilities');
    
    % -- Set Index to Mask parameters
    setfieldindexnumbers(block);
    
    % -- Set Visibilities
    idx = [idxFingerPhases idxFingerPowers idxFingerEnables idxSpeed];
    
    % -- Update the Mask Parameters
    [En{idx}]  = deal('off');
        
    nameBlk = find_system(gcs,'Regexp','on','Name','\<Channel Models\>');
    if(~isempty(nameBlk))
        if(strcmp(Vals{idxPropConditions},'No Channel'))   % No Channel
            set_param([gcs '/WCDMA Channel Models'],'BlockChoice','No Channel');
            
        elseif(strcmp(Vals{idxPropConditions},'Static - AWGN'))   % Static Case   
            set_param([gcs '/WCDMA Channel Models'],'BlockChoice','AWGN');
            
        else % Multipath Case
            set_param([gcs '/WCDMA Channel Models'],'BlockChoice','Multipath+AWGN');
        end
    end
    
    % -- Preload  Parameters
    switch(Vals{idxPropConditions})  
        
    case 'No Channel'
        Vals{idxFingerPhases}       = '0'; 
        Vals{idxFingerPowers}       = '0';
        Vals{idxFingerEnables}      = '1';
        Vals{idxSpeed}              = '0';
        Vals{idxSnrdB}              = 'Inf';
        
        % Disable Snr parameter
        [En{idxSnrdB}] = deal('off');
        
        
    case 'Static - AWGN'
        Vals{idxFingerPhases}       = '0'; 
        Vals{idxFingerPowers}       = '0';
        Vals{idxFingerEnables}      = '1';
        Vals{idxSpeed}              = '0';  
        if(strcmp(Vals{idxSnrdB},'Inf'))
            Vals{idxSnrdB} = '-1';
        end
        
        % Enable Snr parameter
        [En{idxSnrdB}] = deal('on');
        
    case 'Multipath Profile - Case 1'
        Vals{idxFingerPhases}       = '[0 976e-9]'; 
        Vals{idxFingerPowers}       = '[0 -10]';
        Vals{idxFingerEnables}      = '2';
        Vals{idxSpeed}              = '3';
        if(strcmp(Vals{idxSnrdB},'Inf'))
            Vals{idxSnrdB} = '9';
        end
        
        % Enable Snr parameter
        [En{idxSnrdB}] = deal('on');
        
    case 'Multipath Profile - Case 2'
        Vals{idxFingerPhases}       = '[0 976e-9 20000e-9]'; 
        Vals{idxFingerPowers}       = '[0 0 0]';
        Vals{idxFingerEnables}      = '3';
        Vals{idxSpeed}              = '3';
        if(strcmp(Vals{idxSnrdB},'Inf'))
            Vals{idxSnrdB} = '-3';
        end
        
        % Enable Snr parameter

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -