如何将值传递给Matlab中的子函数我收到输出错误?

时间:2010-03-12 01:19:10

标签: matlab

下面是我在Matlab中的代码我遇到了行sum =(h / 2)*(f(a)+ f(b))+ h的问题; Matlab说当我尝试调用f(x)函数时,我需要输出很多输出。我的问题是f(x)函数

function Trapezoid_Uniform(a,b,n)
    h = (b - a)/n;
    sum = (h/2) * (f(a) + f(b)) + h;

    for i = 1:n-1
        x = a + i*h;
        sum = sum + f(x);
    end

    sum = sum*h;
    disp(sum);
end

function f(z)
    f = exp(z);
end

3 个答案:

答案 0 :(得分:7)

您需要在函数中指定返回的变量。例如,在C ++中有一个明确的return语句 - MATLAB如何知道需要返回什么?您可以在签名中指定它,即在这种情况下f_of_z

function f_of_z = f(z)

f_of_z = exp(z);

end

答案 1 :(得分:1)

是的,你的问题在于子功能:它应该返回一个输出(也许你的主要功能也应该这样做);

而不是

function f(z)
f=exp(z);
end

你应该写

function out = f(z)
out = exp(z)
end

答案 2 :(得分:1)

我这里没有matlab来测试,反正f的代码应该是

function y = f(z)
   y = exp(z);
end