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

📄 median.m

📁 optimization toolbox
💻 M
字号:
function varargout=median(varargin)
%MEDIAN (overloaded)
%
% M = median(x)
%
% MEDIAN is implemented using the overloaded SORT operator.

% Author Johan L鰂berg
% $Id: median.m,v 1.2 2006/05/16 12:32:35 joloef Exp $

x = varargin{1};

if nargin > 1 | min(size(x))>1
    error('SDPVAR/MEDIAN only supports simple 1-D median'),
end

switch length(x)
    case 1
        varargout{1} = x;
    case 2
        varargout{1} = sum(x);
    otherwise
        y = sort(x);
        if even(length(x))
            y1 = extsubsref(y,length(x)/2);
            y2 = extsubsref(y,1+length(x)/2);
            varargout{1} = (y1+y2)/2;
        else
            varargout{1} = extsubsref(y,ceil(length(x)/2));
        end
end


%         
% 
% switch class(x)
% 
%     case 'double'
%         y = sort(x)
%         
%                 if even(length(x))
%                     y1 = y(length(x)/2);
%                     y2 = y(1+length(x)/2);
%                     varargout{1} = (y1+y2)/2;
%                 else
%                     varargout{1} = y(ceil(length(x)/2));
%                 end
% 
%     case 'sdpvar' % Overloaded operator for SDPVAR objects. Pass on args and save them.
% 
%         if nargin > 1 | min(size(varargin{1}))>1
%             error('SDPVAR/MEDIAN only supports simple 1-D median'),
%         end
% 
%         switch length(x)
%             case 1
%                 varargout{1} = x;
%             case 2
%                 varargout{1} = sum(x);
%             otherwise
%                 y = sort(x);
% 
%                 if even(length(x))
%                     y1 = y(length(x)/2);
%                     y2 = y(1+length(x)/2);
%                     varargout{1} = (y1+y2)/2;
%                 else
%                     varargout{1} = y(ceil(length(x)/2));
%                 end
%             otherwise
%                 error('Strange type on first argument in SDPVAR/MEDIAN');
%         end

⌨️ 快捷键说明

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