【发布时间】:2015-01-16 03:55:09
【问题描述】:
我遇到以下 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)
知道出了什么问题吗?
编辑:我应该提到函数 J 是从其他函数定义的,因此我无法将输入作为单独的参数提供。我试图将输入作为单元格传递为: 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。
【问题讨论】: