1

我想映射一个函数,该函数在两个长度相同的向量上接受两个参数,从每个向量中获取一个参数。我可以用一个论点来做到这一点:

map(@sqrt, 1:10)
ans = ....

help map给出以下示例:

map(@min, A, B)
ans = ...

其中AB是 2 × 2 矩阵,结果矩阵是元素最小值。但是当我尝试这个例子时,我得到以下错误:

A = rand(2,2);
B = rand(2,2);
map(@min, A, B)
error: invalid assignment to cs-list outside multiple assignment.
error: assignment to cell array failed
error: assignment failed, or no method for `<unknown type> = scalar'
error: called from:
error:   C:\Octave\3.2.4_gcc-4.4.0\share\octave\packages\miscellaneous-1.0.9\map.m at line 108, column 21

我究竟做错了什么?我的系统是Win7,64位,如你所见,我的八度版本是3.2.4。

4

1 回答 1

1

多亏了这个问题,我才发现它map已被弃用,并且正确使用的功能是arrayfun,它开箱即用,都适用于 octave 版本 3.2.4,这是我在下载普通 Windows 安装程序时得到的,以及使用 cygwin 获得的 octave 版本 3.6.2。在 3.6.2 版本中,它甚至似乎map需要miscellaneous包,但arrayfun实际上不需要。

所以我永远不会知道我做错了什么,或者是否有错误(不太可能,因为该功能非常标准),但我的问题通过替换解决了arrayfun

A = rand(2,2);
B = rand(2,2);
arrayfun(@min, A, B)
ans = .... % correct answer
于 2012-09-05T13:33:08.733 回答