整数和标量积函数处理Matlab

时间:2018-11-20 15:14:06

标签: matlab

我需要计算这种积分

enter image description here

我在一个函数中定义了两个f(x,y)g(x,y)

h = {@(x,y) f, @(x,y) g};

其中fg是之前定义的公式。这样,我有一个1x2的像元,我想将标量积计算为

F = @(x,y) dot(h,E)

其中E是矢量2x1,然后进行积分

int = integral2(F,a,b,c,d);

给我这个错误

Undefined function 'conj' for input arguments of type 'cell'.

Error in dot (line 37)
        c = sum(conj(a).*b);

Error in tm_np>@(R,PHI)dot(e_n_even,E)

Error in integral2Calc>integral2t/tensor (line 228)
        Z = FUN(X,Y);  NFE = NFE + 1;

Error in integral2Calc>integral2t (line 55)
[Qsub,esub] = tensor(thetaL,thetaR,phiB,phiT);

Error in integral2Calc (line 9)
    [q,errbnd] = integral2t(fun,xmin,xmax,ymin,ymax,optionstruct);

Error in integral2 (line 106)
    Q = integral2Calc(fun,xmin,xmax,yminfun,ymaxfun,opstruct);

我不明白为什么会给我这个错误。由于积分的结果,我应该有一个2x1向量

1 个答案:

答案 0 :(得分:0)

问题在于您的数据生成。 integral2仅接受将@(x,y)作为 vector 输入并返回相同大小的函数。在您的情况下,h还不是,F没有@(x,y)输入(嗯,有输入,但是您决定不将它们传递给h !!!)

 % sample data
 f=@(x,y)x.^2+y;
 g=@(x,y)y.^2+x+3;
 E=[3 1];
 % Create auxiliary fucntion
 mydot=@(x,y)(f(x,y).*E(1)+g(x,y).*E(2));
 % work
 int = integral2(mydot,0,3,1,5);