目前还没有真正好的答案。如果您只想定义一个在您的工作区中可以看到的简单变量,那么
f00 = 88;
显然有效。但这不会在其他函数中看到。所以你可以将它定义为一个全局变量,但是你需要在每个需要它的函数中将每个变量声明为全局变量。对我来说,这似乎是一个杂牌。恕我直言,稍微好一点的是为 foo 定义一个函数 m-file。
function returnvalue = f00
% returns the scalar value of 88
returnvalue = 88;
(请注意,我这里有一个注释行。当您调用 help foo 时会返回该行,同样,lookfor 也会看到该行。推荐比这更好的帮助,但我现在感觉很懒。)
只要 foo.m 在您的搜索路径上,那么它总是返回值 88。请注意,我没有包含任何参数。但是您可以更有创意,并且可能允许使用大小参数,以便 foo(N) 的行为与 zeros、ones 和 eye 一样。这是在这里使用函数的好处。它可以完全按照您的意愿进行。所以也许...
function returnvalue = f00(varargin)
% returns the scalar value of 88, or replicated elements if a size is supplied
% usage: foo
% usage: foo(N)
% usage: foo(N1,N2,...)
%
% arguments:
% N - a scalar or vector that denotes the number
% of repeated elements (all 88) to be generated
%
% returnvalue - a scalar (or vector/array) of
% size indicated by N.
%
% see also: ones, zeros, eye
if (nargin == 0)
% no arguments, so return a scalar 88
returnvalue = 88;
elseif (nargin == 1) && isscalar(varargin{1})
% be consistent with ones, zeros, eye, etc.
returnvalue = repmat(88,[varargin{1},varargin{1}]);
elseif (nargin == 1)
% the size is a vector already
if isvector(varargin{1})
returnvalue = repmat(88,varargin{1});
else
error('FOO:impropersize','Size argument cannot be a general array')
end
elseif
% nargin must have been more than 1
returnvalue = repmat(88,cell2mat(varargin));
end
我可能会在上面做一些更好的错误检查,但你应该明白大致的想法。