MATLAB говорит, что эта функция не определена - PullRequest
0 голосов
/ 05 октября 2019

Я пишу скрипт для доступа к функции, которая была написана в другом скрипте.

Когда я запускаю второй скрипт, ошибка заключается в том, что функция не определена.

Я работал в обратном направлении и в настоящее время пытаюсь заставить функцию работать в командном окне.

Файл функции появился в окне текущей папки. Когда он выделен, все функции и параметры отображаются в окне ниже (имя файла отображается сверху, а затем содержимое файла).

Я все еще получаю, что функция не определена, когда я копирую и вставляю вызов функции из скрипта в командное окно.

Я попытался перестроить функции по отдельности в отдельных сценариях, но я все еще получаю сообщение об ошибке.

Я убедился, что они находятся в той же папке и пишутся точно так же, чтоя делаю неправильно?

'' '% имя файла Lab_5_functions.m

    function[vel] = velocity (g,m,co_d,t)
         vel= ((g*m)/co_d)^(1/2)*tanh(((g*co_d)/m)^(1/2)*t);
    end

    function [dvel]= dvelocity (g,m,co_d,t)
         dvel=(((.5*(g*m)/co_d)^(1/2)*tanh(((g*co_d)/m).^(1/2)*t_sec))-(((g*t)/(2*m))*(sech(((g*co_d)./m).^(1/2)*t))));
    end

' '' v = скорость (1,2,3,4)% сообщения об ошибке ниже: не определенофункция или переменная «скорость». '' '

Спасибо -MK

Ответы [ 2 ]

0 голосов
/ 06 октября 2019

MATLAB ищет имена файлов, чтобы найти функции, и ожидает, что первая строка этого файла будет определением функции.

Например: myfunc.m

function output = myfunc(input)

Если вы хотитеМного функций в одном файле (например, модуль / библиотека), я использовал обходной путь: запишите все свои функции в файл, затем включите блок if-else для вызова правильной функции. Несколько аргументов могут быть проанализированы с помощью нескольких простых проверок (см. Функцию nargin). Это менее элегантное решение;Я использую его только в том случае, если у меня много простых функций, и было бы очень неприятно иметь кучи файлов .m.

Вот простой пример:

Вызов файла: myfunc.m

function output = myfunc(fn, arg1, arg2, ...)

    function out = func1(arg1, arg2, ...)
        out = 0

    if strcmp(fn, 'func1')
        if nargin == 2
            output = func1(arg1)
        end

    elseif strcmp(fn, 'func2')
        ...
    end

0 голосов
/ 05 октября 2019

Matlab ищет функции, используя имена файлов. Таким образом, вы определяете одну общедоступную функцию myfunc в файле myfunc.m.

Вы можете определить дополнительные функции в этом файле, но они не будут доступны вне этого .m файла.

...