我正在尝试创建两个匿名函数,并使用单个fplot
语句绘制它们。以下代码用于绘制单个函数:
f = @(x) sin(x)
fplot(f, [-3, 3])
但是,当我包含以下内容时,它不起作用:
g = @(x) cos(x)
fplot([f, g], [-3, 3])
有谁知道这里有什么问题?
答案 0 :(得分:4)
如果你真的必须这样做:
>> f = @sin;
>> g = @cos;
>> hold on
>> cellfun(@(func) fplot(func, [-3, 3]), {f, g})
这将函数句柄@(func) fplot(func, [-3, 3])
应用于单元格数组{f, g}
中的每个元素。由于我也调用hold on
,因此两个函数都会显示在结果图中。如果您不致电hold on
,则只会看到cos(x)
,因为这是最后一个被绘制的函数。
您无法在标准MATLAB数组中保存函数句柄。你应该使用单元格数组。
如果您阅读了尝试将函数句柄放入标准数组中的错误消息,您将收到有关如何操作的信息性消息:
>> [f, g]
Error using horzcat
Nonscalar arrays of function handles are not allowed; use cell arrays instead.