0

我有这个功能

function [imag2] = sumIntegral(x,w,a,b,c,p)
    imag2 = zeros(p-1,p);
for k = 1:p-1
    f = @(t)(1:p-1==k)*Integrand[1](t,x,w,a,b,c);
    imag2(k,:) = quadv(f,x(k),x(k+1));
end

Integrand[1]应该是real2这个功能

[real2,real3,imag2,imag3] = Integrand(t,x,w,a,b,c,p);

问题是,如果我Integrand之前定义了函数,我会得到一个错误,因为t未定义。你知道如何写成real2一个函数t吗?

4

2 回答 2

0

只需在 for 循环之外定义您的快速函数

function [imag2] = sumIntegral(x,w,a,b,c,p)
    imag2 = zeros(p-1,p);
    f = @(t)(1:p-1==k)*Integrand[1](t,x,w,a,b,c);
    for k = 1:p-1        
    imag2(k,:) = quadv(f,x(k),x(k+1));
    end
end
于 2013-04-02T10:51:27.930 回答
0

您可以只制作一个仅输出第一个参数的虚拟代理函数:

function real2 = MyIntergrand(t,x,w,a,b,c)
    real2 = Integrand(t,x,w,a,b,c);
end
于 2013-04-02T10:24:02.627 回答