📄 subsref.m
字号:
function theResult = subsref(self, theStruct)
% ncrec/subsref -- Overloaded subscriting for ncrec.
% subsref(self, theStruct) processes subscript references to self,
% an "ncrec" object. The basic syntax is self(theRecindex), which
% returns the record-data struct corresponding to theRecindex. If
% theRecindex == 0, the struct contains all zeros, for use as a
% template. The syntax can be extended with a valid field name
% and indices, as in "self(10).field(1:20, 2:2:30)".
% Also see: ncatt/subsasgn.
% Copyright (C) 1997 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 16:01:38.
if nargin < 1, help(mfilename), return, end
result = [];
s = theStruct;
theType = s(1).type;
theSubs = s(1).subs;
s(1) = [];
if isa(theSubs, 'cell'), theSubs = theSubs{1}; end
switch theType
case '()'
theRecindex = theSubs;
theVars = self.itsVars;
theVarData = cell(1, length(theVars));
theVarName = cell(1, length(theVars));
for i = 1:length(theVars)
theVarName{i} = name(theVars{i});
if theRecindex > 0
theVarData{i} = theVars{i}(theRecindex, :);
else
theSize = ncsize(theVars{i});
if length(theSize) == 1, theSize = [theSize 1]; end
if length(theSize) == 2, theSize = [theSize 1]; end
theVarData{i} = zeros(theSize(2:length(theSize)));
end
end
result = cell2struct(theVarData, theVarName, 2);
for i = 1:length(s)
if ~iscell(s(i).subs), s(i).subs = {s(i).subs}; end
end
switch length(s)
case 0
case 1
result = getfield(result, s(1).subs)
case 2
result = getfield(result, {1}, s(1).subs, s(2).subs)
otherwise
warning([' ## Illegal syntax: Too many substripts.'])
end
otherwise
warning([' ## Illegal syntax: "' theType '"'])
end
if nargout > 0
theResult = result;
else
disp(result)
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -