Как передать значение в подфункцию в Matlab Я получаю ошибки вывода? - PullRequest
0 голосов
/ 12 марта 2010

Ниже приведен мой код в Matlab. У меня проблемы с суммой строк = (h / 2) * (f (a) + f (b)) + h; Матлаб говорит, что у меня много выходов, когда я пытаюсь вызвать функцию 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 ]

7 голосов
/ 12 марта 2010

Вам необходимо указать возвращаемую переменную в вашей функции. Например, в C ++ есть явное выражение return - как MATLAB узнает, что должно быть возвращено? Вы указываете это в подписи, т.е. в этом случае f_of_z.

function f_of_z = f(z)

f_of_z = exp(z);

end
1 голос
/ 12 марта 2010

У меня нет matlab для тестирования, в любом случае код для f должен быть

function y = f(z)
   y = exp(z);
end
1 голос
/ 12 марта 2010

Да, ваша проблема в подфункции: она должна возвращать вывод (возможно, ваша основная функция должна делать то же самое);

Вместо

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

вы должны написать

function out = f(z)
out = exp(z)
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...