📄 subsref.m
字号:
function theResult = subsref(self, theStruct)
% ncatt/subsref -- Overloaded "{}", ".", and "()" operators.
% subsref(self, theStruct) processes the subscripting
% operator () for self, an "ncatt" object referenced on
% the righthand side of an assignment, such as in
% result = self(...).
% Also see: ncatt/subsasgn.
% Copyright (C) 1996 Dr. Charles R. Denham, ZYDECO.
% All Rights Reserved.
% Disclosure without explicit written consent from the
% copyright owner does not constitute publication.
% Version of 07-Aug-1997 15:45:48.
if nargin < 1, help(mfilename), return, end
if length(theStruct) < 1
result = self;
if nargout > 0
theResult = result;
else
disp(theResult)
end
return
end
result = [];
theNCid = ncid(self);
theVarid = varid(self);
theAttname = name(self);
theDatatype = datatype(self);
theTypelen = ncmex('typelen', theDatatype);
isUnsigned = unsigned(self);
if length(theStruct) == 1
s = theStruct;
theType = s(1).type;
theSubs = s(1).subs;
s(1) = [];
if theNCid >= 0
[result, status] = ...
ncmex('attget', theNCid, theVarid, theAttname);
if status >= 0 & isstr(result)
result = strrep(result, setstr(0), '\0');
end
else
result = self.itsAttvalue;
end
switch theType
case '()' % Attribute data: self(...)
if isa(theSubs, 'cell'), theSubs = theSubs{1}; end
switch class(theSubs)
case 'char'
switch theSubs
case ':'
otherwise
warning(' ## Illegal syntax.')
end
case 'double'
result = result(theSubs);
otherwise
warning([' ## Illegal syntax: "' theSubs '"'])
end
if isUnsigned & prod(size(result)) > 0
result(result < 0) = 2^(8*theTypelen) + result(result < 0);
end
otherwise
warning(' ## Illegal syntax.')
end
else
warning([' ## Illegal syntax: "' theType '"'])
end
if nargout > 0
theResult = result;
else
disp(theResult)
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -