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

📄 dspblkmagfft2.m

📁 matlab fftn.m 在matlab中开发的 .m源程序
💻 M
字号:
function iconstr = dspblkmagfft2(action)
% DSPBLKMAGFFT2 Mask dynamic dialog function for
% Magnitude FFT power spectrum estimation block

% Copyright 1995-2002 The MathWorks, Inc.
% $Date: 2002/04/12 22:17:36 $ $Revision: 1.6 $

blk = gcb;
if nargin<1, action='dynamic'; end

% Determine "Inherit FFT length" checkbox setting
inhFftStr = get_param(blk,'fftLenInherit');


switch action
case 'init'
    % Make model changes here, in response to mask changes
    
    % Compare 'inherit' checkbox of this block
    % to the setting of the underlying zero-pad block
    %
    % If not the same, push the change through:
    zpadblk       = [blk '/Zero Pad'];
    zpadPopup     = get_param(zpadblk,'zpadAlong');
    changePending = ~(     (strcmp(inhFftStr,'on')  & strcmp(zpadPopup,'None'))    ...
                         | (strcmp(inhFftStr,'off') & strcmp(zpadPopup,'Columns')) ...
                     );
    if changePending,
        % Update the Zero Pad block underneath the top level
        if strcmp(inhFftStr, 'on'), str='None'; else str='Columns'; end
        set_param(zpadblk, 'zpadAlong', str);
    end

    magflag = get_param(blk,'mag_or_magsq');
    if strcmp(magflag, 'Magnitude squared')
      iconstr='|FFT|^2';
    else
      iconstr='|FFT|';
    end

case 'dynamic'
    % Execute dynamic dialogs
    
    % Determine if FFT length edit box is visible
    iFFTedit = 3; fftEditBoxEnabled = strcmp(inhFftStr, 'off');

    % Cache original dialog mask enables
    ena_orig = get_param(blk,'maskenables');
    ena = ena_orig;
    enaopt = {'off','on'};
    ena([iFFTedit]) = enaopt([fftEditBoxEnabled]+1);
    
    % Map true/false to off/on strings, and place into visibilities array:
    if ~isequal(ena,ena_orig),
        % Only update if a change was really made:
        set_param(blk,'maskenables',ena);
    end

case 'update'
    sqname = ['Magnitude' char(10) 'Squared'];
    sqrtname = 'Magnitude';
    fullblk  = getfullname(blk);
    % Determine "Mag or Mag Squared" setting
    magflag = get_param(blk,'mag_or_magsq');
    if strcmp(magflag, 'Magnitude squared')
      if exist_block(blk,sqrtname)
        delete_line(fullblk,'FFT/1',[sqrtname '/1'])
        delete_line(fullblk,[sqrtname '/1'], 'Out/1')
        pos = get_param([blk '/Magnitude'],'position');
        delete_block([blk '/Magnitude'])
        add_block('built-in/Math',[blk '/Magnitude Squared' char(10) ...
                    'Squared'],'position',pos, 'name', sqname,'function','magnitude^2')
        add_line(fullblk,'FFT/1',[sqname '/1'])
        add_line(fullblk,[sqname '/1'], 'Out/1')
      end
    else
      if exist_block(blk,sqname)
        delete_line(fullblk,'FFT/1',[sqname '/1'])
        delete_line(fullblk,[sqname '/1'], 'Out/1')
        pos = get_param([blk '/Magnitude Squared'],'position');
        delete_block([blk '/Magnitude Squared'])
        add_block('built-in/Abs',[blk '/Magnitude'],'position',pos,'name',sqrtname)
        add_line(fullblk,'FFT/1',[sqrtname '/1'])
        add_line(fullblk,[sqrtname '/1'], 'Out/1')
      end
    end
      
end


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function present = exist_block(sys, name)
    present = ~isempty(find_system(sys,'searchdepth',1,...
        'followlinks','on','lookundermasks','on','name',name));


% [EOF] dspblkmagfft2.m

⌨️ 快捷键说明

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