www.gusucode.com > mbcmodels 工具箱 matlab 源码程序 > mbcmodels/@localmod/modelproperties.m

    function p = modelproperties(L,p,Lreal)
%MODELPROPERTIES interface to model properties
%
% p = modelproperties(m,p);

%  Copyright 2006-2007 The MathWorks, Inc.

if nargin<3
    % this is needed as 
    Lreal = L;
end
p = addprop(p,'Transform',...
    @iGetTransform,...
    @iSetTransform,...
    'char','',...
    'Transform function');

if supportTBS(Lreal)
    p = addprop(p,'TransformBothSides',...
        @iGetTBS,...
        @iSetTBS,...
        'boolean',false,...
        'Transform both sides');
end


if supportCovModel(Lreal)
    [n,CovNames] = gls_wlist(covmodel(L));
    CovNames{1} = 'None';
    p = addprop(p,'CovarianceModel',...
        @iGetCovModel,...
        @iSetCovModel,...
        'enum',CovNames,...
        'Covariance Model');
    [n,CorrNames] = gls_clist(covmodel(L));
    CorrNames{1} = 'None';
    p = addprop(p,'CorrelationModel',...
        @iGetCorrModel,...
        @iSetCorrModel,...
        'enum',CorrNames,...
        'Correlation Model');
end
if permitsDatum(Lreal)
    p = addprop(p,'DatumType',...
        @iGetDatum,...
        @iSetDatum,...
        'enum',{'None','Maximum','Minimum','Linked'},...
        'Datum Type');    
end



%% Transform
function ytrans = iGetTransform(L)

ytrans = get(L,'ytrans');


function L = iSetTransform(L,ytrans)

set(L,'ytrans',ytrans);


%% TBS
function tbs = iGetTBS(L)

tbs = logical(get(L,'tbs'));

function L = iSetTBS(L,tbs)

if islogical(tbs) && isscalar(tbs)
    set(L,'tbs',tbs);
else
    error(message('mbc:localmod:InvalidArgument'))
end

%% Covariance model
function c = iGetCovModel(L)

[n,Names] = gls_wlist(covmodel(L));
if n==1
    c = 'None';
else
    c = Names{n};
end

function L = iSetCovModel(L,c)

[n,Names] = gls_wlist(covmodel(L));
Names{1} = 'None';
if ischar(c) && ismember(c,Names)
    n = find( strcmp(c,Names) );
    cmod=  gls_wlist(covmodel(L),n);
    L = covmodel(L,cmod);
else
    list = sprintf('''%s'',',Names{:});
    list(end) = '.';
    error(message('mbc:localmod:InvalidArgument1', list))
end


%% Correlation model
function c = iGetCorrModel(L)

[n,Names] = gls_clist(covmodel(L));
if n==1
    c = 'None';
else
    c = Names{n};
end

function L = iSetCorrModel(L,c)

[n,Names] = gls_clist(covmodel(L));
Names{1} = 'None';
if ischar(c) && ismember(c,Names)
    n = find( strcmp(c,Names) );
    cmod=  gls_clist(covmodel(L),n);
    L = covmodel(L,cmod);
else
    list = sprintf('''%s'',',Names{:});
    list(end) = '.';
    error(message('mbc:localmod:InvalidArgument2', list))
end

%% Datum Type
function Type = iGetDatum(L)

val = get(L,'DatumType')+1;
List = {'None','Maximum','Minimum','Linked'};
Type = List{val};

function L = iSetDatum(L,Type)

val = find(strcmp(Type,{'None','Maximum','Minimum','Linked'}))-1;
set(L,'DatumType',val);