我想修改函数rand并定义我自己的函数
function num = rand(varargin)
大多数时候,我只是包装调用
num = builtin("rand", [varargin{:}]);
这种方法很有效,除非有字符串参数。
rand(2,3,"double")
我获得了
warning: implicit conversion from numeric to char
warning: called from rand at line 83 column 11
error: rand: unrecognized string argument
error: called from rand at line 83 column 11
和rand("seed",2)
相同。
另一方面,rand("seed")
似乎工作正常。
有人可以提供解释和解决方案吗?
答案 0 :(得分:1)
语法:
num = builtin('rand', [varargin{:}]);
只有在输入参数可以表示为comma-separated list或向量的情况下(例如,当您为rand
指定大小时),它才适用于您:
num = rand(2, 3, 4);
% Or ...
num = rand([2 3 4]);
不会适用于必须单独输入的输入,如下所示:
num = rand(2, 3, 'double'); % Works
num = rand([2 3 'double']); % Throws an error
一般情况下,您应该将varargin
的内容作为以逗号分隔的列表(不含collecting the contents into a vector/matrix)传递,因为builtin
旨在解决这个问题:
num = builtin('rand', varargin{:});
另外,要注意"字符串"之间的区别。例如'rand'
(a character array)和"rand"
(a string)。在某些情况下,他们可能会有不同的行为。