2

我正在尝试创建两个匿名函数并使用单个fplot语句绘制它们。以下代码用于绘制单个函数:

f = @(x) sin(x)

fplot(f, [-3, 3])

但是,当我包含以下内容时,它不起作用:

g = @(x) cos(x)

fplot([f, g], [-3, 3])

有谁知道这里有什么问题?

4

1 回答 1

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.
于 2013-09-06T02:46:23.710 回答