www.gusucode.com > 使用MATLAB来优化投资组合与金融工具箱 > 使用MATLAB来优化投资组合与金融工具箱/使用MATLAB来优化投资组合与金融工具箱/portfoliodemo/@PortfolioDemo/PortfolioDemo.m
classdef PortfolioDemo < Portfolio %PortfolioDemo - Extended Portfolio object that has a few additional methods. % % Copyright 2011 The MathWorks, Inc. methods (Access = 'public', Static = false, Hidden = false) % constructor method function obj = PortfolioDemo(varargin) %PortfolioDemo - Construct PortfolioDemo object. if nargin < 1 || isempty(varargin) % no argument list % create a PortfolioDemo object from scratch and put into obj % return object with empty properties return elseif isa(varargin{1}, 'PortfolioDemo') % first argument is a PortfolioDemo object so put into obj % put remaining argument list into the variable arglist obj = varargin{1}; if ~isscalar(obj) error('finance:PortfolioDemo:PortfolioDemo:NonScalarPortfolioDemoObject', ... ['A non-scalar PortfolioDemo object was passed into the constructor.\n' ... 'Only scalar PortfolioDemo objects can be processed by the constructor.']); end if nargin > 1 arglist = varargin(2:end); else return end else % argument list is just parameter-value pairs % make sure that no PortfolioDemo object in the argument list after the first argument % if ok, put argument list into the variable arglist arglist = varargin; for i = 1:numel(arglist) if isa(arglist{i}, 'PortfolioDemo') error('finance:PortfolioDemo:PortfolioDemo:ImproperObjectInput',... ['A PortfolioDemo object was passed incorrectly into the constructor.\n' ... 'Only the first argument may be a PortfolioDemo object with syntax\n\t', ... 'obj = PortfolioDemo(obj, ''Property1'', value1, ... );']); end end end % separate parameters and values from argument list parameters = arglist(1:2:end); values = arglist(2:2:end); % make sure pairs of parameters and values if numel(parameters) ~= numel(values) error('finance:PortfolioDemo:PortfolioDemo:InvalidParameterValuePairs',... ['Invalid syntax for parameter-value pairs for PortfolioDemo constructor. ', ... 'Syntax must be either\n\t' ... 'obj = PortfolioDemo(''Property1'', value1, ... );\n' ... 'or\n\t' ... 'obj = PortfolioDemo(obj, ''Property1'', value1, ... );']); end % make sure parameters are strings for i = 1:numel(parameters) if ~ischar(parameters{i}) error('finance:PortfolioDemo:PortfolioDemo:InvalidParameterString',... ['Non-string parameter encountered for a parameter-value pair. ', ... 'Syntax must be either\n\t' ... 'obj = PortfolioDemo(''Property1'', value1, ... );\n' ... 'or\n\t' ... 'obj = PortfolioDemo(obj, ''Property1'', value1, ... );']); end end % parse arguments obj = parsearguments(obj, parameters, values); % check arguments obj = checkarguments(obj); end % demo methods [pwgt, pbuy, psell] = maximizeSharpeRatio(obj); end % hidden methods methods (Access = 'public', Static = false, Hidden = true) % utility methods function objstate = checkobject(obj) if isa(obj,'PortfolioDemo') && isscalar(obj) objstate = true; else objstate = false; end end end end