我遇到以下Matlab错误:
??? Input argument "Va4" is undefined.
Error in ==>
sym.matlabFunction>makeFhandle/@(Va1,Va4,Vm1,Vm4)reshape([cos(conj(Va1)-conj(Va4)).*conj(Vm1).*conj(Vm4).*(6.25e2./7.2e1)+Vm1.*Vm4.*cos(Va1-Va4).*(6.25e2./7.2e1),sin(conj(Va1)-conj(Va4)).*conj(Vm1).*conj(Vm4).*(6.25e2./7.2e1)+Vm1.*Vm4.*sin(Va1-Va4).*(6.25e2./7.2e1),Vm4.*sin(Va1-Va4).*(6.25e2./7.2e1)+sin(conj(Va1)-conj(Va4)).*conj(Vm4).*(6.25e2./7.2e1),Vm1.*(6.25e2./3.6e1)+conj(Vm1).*(6.25e2./3.6e1)-Vm4.*cos(Va1-Va4).*(6.25e2./7.2e1)-cos(conj(Va1)-conj(Va4)).*conj(Vm4).*(6.25e2./7.2e1)],[2,2])
我试图评估一个匿名函数,一个2x2矩阵,如下所示
J = @(Va1,Va4,Vm1,Vm4) reshape( ...
[cos(conj(Va1)-conj(Va4)).*conj(Vm1).*conj(Vm4).*(6.25e2./7.2e1)+Vm1.*Vm4.*cos(Va1-Va4).*(6.25e2./7.2e1),...
sin(conj(Va1)-conj(Va4)).*conj(Vm1).*conj(Vm4).*(6.25e2./7.2e1)+Vm1.*Vm4.*sin(Va1-Va4).*(6.25e2./7.2e1),...
Vm4.*sin(Va1-Va4).*(6.25e2./7.2e1)+sin(conj(Va1)-conj(Va4)).*conj(Vm4).*(6.25e2./7.2e1),...
Vm1.*(6.25e2./3.6e1)+conj(Vm1).*(6.25e2./3.6e1)-Vm4.*cos(Va1-Va4).*(6.25e2./7.2e1)-cos(conj(Va1)-conj(Va4)).*conj(Vm4).*(6.25e2./7.2e1)],...
[2,2]);
arrayfun(J, [0,0,1,1] , 'UniformOutput', false)
知道出了什么问题吗?
??? Undefined function or method 'conj' for input arguments of type 'cell'.

编辑#2:由Nemesis解决,我们需要使用A {:}将单元格输入A = {0,0,1,1}传递给arrayfun。
答案 0 :(得分:1)
[B1,...,Bm] = arrayfun(func,A1,...,An,Name,Value)
每个输入参数都是一个参数。由于您将四个输入参数作为数组
传递[0,0,1,1]
这只被视为一个论点。只需将您对匿名函数的调用重写为
即可arrayfun(J, 0, 0, 1, 1, 'UniformOutput', false)
解决了这个问题。您现在可以使用例如
使代码更加平行arrayfun(J, [0 1 1],[0 0 1],[1 0 1],[1 1 1] , 'UniformOutput', false)
ans =
[2x2 double] [2x2 double] [2x2 double]
将在所有J
,[0,0,1,1]
和[1,0,0,1]
上使用[1,1,1,1]
功能。