Matlab 在维数为nx2的矩阵上调用具有2个参数的函数

Matlab 在维数为nx2的矩阵上调用具有2个参数的函数,matlab,Matlab,我有一个函数f,它有两个参数,我想把这个函数应用到矩阵M的每一行上,矩阵M的维数为nx2 我试过使用,num2cell(M,2),然后调用cellfun(@f,num2cell(M,2))。这不起作用,因为f接受两个参数,而不是一个向量 但随后调用cellfun(@f,num2cell(num2cell(M,2)(1)))导致错误: error: binary operator '^' not implemented for 'cell' by 'scalar' operations f情况如

我有一个函数f,它有两个参数,我想把这个函数应用到矩阵M的每一行上,矩阵M的维数为nx2

我试过使用,num2cell(M,2),然后调用cellfun(@f,num2cell(M,2))。这不起作用,因为f接受两个参数,而不是一个向量

但随后调用cellfun(@f,num2cell(num2cell(M,2)(1)))导致错误:

error: binary operator '^' not implemented for 'cell' by 'scalar' operations
f情况如下:

function y = f (r, phi)
  y = r^(2/3)*sin(2*phi/3);
endfunction

有人能告诉我如何调用矩阵上的函数,其中每个行向量自动分割为2个标量吗?

有没有理由不这样分别手动传递
M(:,1)
M(:,2)
?细胞应该像
C=num2cell(M,2)一样工作;f(C{:})
进行转置。哦,你需要使用
^
*
内部对函数进行矢量化。非常感谢,这正是我想要的。但只有在你真正需要的时候才转换为单元格:它们很慢。既然你还没有任何投票或答案,考虑删除你的问题,因为它不可能有助于未来读者:嗯,对不起,没有看到它。删除它