📄 datatype.m
字号:
function theResult = datatype(self, theNewDatatype)
% ncvar/datatype -- Numeric type of an ncatt object.
% datatype(self) returns the numeric type of self,
% an "ncvar" object. The allowed datatypes are:
% {'byte', 'char', 'short', 'long', 'float', 'double'}.
% datatype(self, 'theNewDatatype') changes the datatype
% of self to 'theNewDatatype'. The NetCDF file itself
% must be writeable. The function will also reset the
% datatype of the associated "_FillValue" (if any) to
% the same new type. The new self is returned.
% 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 09:42:59.
if nargin < 1, help(mfilename), return, end
result = '';
theTypes = {'byte', 'char', 'short', 'long', 'float', 'double'};
theNCid = ncid(self);
% Get the existing datatype.
if theNCid >= 0
theVarid = varid(self);
[theName, theType, theNdims, theDimids, theNatts, status] = ...
ncmex('varinq', theNCid, theVarid);
if status >= 0 & ~isstr(theType)
theType = theTypes{theType};
end
else
theType = self.itsVartype;
end
result = theType;
% Change the datatype.
if nargin > 1
theNetCDF = parent(self);
switch lower(permission(theNetCDF))
case {'nowrite'}
disp([' ## No "' mfilename '" action taken; ' ...
'file "' name(theNetCDF) '" permission is "nowrite".'])
if nargout > 0
theResult = self;
else
disp(self)
end
return
end
theVarname = name(self);
theTempname = theVarname;
theTempname(:) = '_';
self = name(self, theTempname);
theDimnames = ncnames(dim(self));
theNetCDF{theVarname} = feval(['nc' theNewDatatype], theDimnames{:});
theVar = theNetCDF{theVarname};
theAtts = att(self);
for i = 1:length(theAtts)
copy(theAtts{i}, theVar)
end
if ~isempty(fillval(self))
fillval(theVar, fillval(self));
end
theData = self(:);
if ~isempty(theData)
theVar(:) = theData;
end
theChangedNetCDF = delete(self);
result = theChangedNetCDF{theVarname};
end
if nargout > 0
theResult = result;
else
disp(result)
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -