Используйте переменные рабочего пространства в функции Matlab
Я хотел бы использовать данные, загруженные в мое рабочее пространство, в функции Matlab. Это начало моей функции.
function [totalProfit] = compute(p,exit)
%% Declaration of variables
entry=0;
T = length(data);
.
.
.
end
Я получаю сообщение об ошибке:
Неопределенная функция или переменная "данные".
Где ошибка?
3 ответа
Переменная data, вероятно, была определена вне функции, поэтому она выходит за рамки.
Проходить data
в качестве параметра для compute
и тогда он будет доступен внутри функции.
Вы можете использовать evalin для работы с переменными из другого рабочего пространства. В вашем примере это может быть
T = evalin('caller','length(data)')
Но учтите, что в большинстве случаев вы получаете более чистый код, если определяете переменную в качестве входного аргумента для функции. Так что для вашего случая это будет
function [totalProfit] = compute(p,exit,data)
T = length(data) ;
end
Ран верен, но я хотел упомянуть кое-что еще. Как правило, только переменные, которые передаются в качестве аргументов функции, могут использоваться внутри этой функции, поэтому, если вы хотите использовать существующие переменные внутри функции, передайте их в качестве входных аргументов.
Можно создавать глобальные переменные, которые позволяют вам использовать их внутри функций, не передавая их в качестве аргументов, но обычно это не лучший способ написания кода. Временами, когда я использовал глобальные переменные, я вызываю несколько функций из одного скрипта, и у меня есть некоторые константы, которые будут использоваться всеми функциями (например, гравитация является общей). Альтернативой глобальным переменным является использование структуры, в которой есть переменные, которые вы хотите передать функции, поэтому вам нужен только один дополнительный входной аргумент, но вы все равно должны быть немного осторожнее.