我想映射一个函数,该函数在两个相同长度的向量上取两个参数,从每个向量中取一个参数。我可以用一个论点来做:
map(@sqrt, 1:10)
ans = ....
help map
给出了以下示例:
map(@min, A, B)
ans = ...
其中A
和B
是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。
答案 0 :(得分:1)
感谢this问题,我能够发现map
已被弃用,正确使用的函数是arrayfun
,它开箱即用,两者都是octave版本3.2.4,这是我在下载普通的Windows安装程序时得到的,以及我使用cygwin的octave版本3.6.2。在版本3.6.2中,map
似乎需要miscellaneous
包,而arrayfun
则不需要。{/ p>
所以我永远不会知道我做错了什么,或者是否有错误(不太可能,因为该函数非常标准),但我的问题只是替换arrayfun
来解决:
A = rand(2,2);
B = rand(2,2);
arrayfun(@min, A, B)
ans = .... % correct answer