Я боролся с этой проблемой около недели. Я пытался преобразовать скрипт в функцию для исследовательских целей. Проблема состоит в том, что в коде есть много условных операторов для переменных, поэтому некоторые переменные не будут существовать в рабочей области, когда они проверяются (именно поэтому он работает хорошо как скрипт).
Varargin не является решением этой проблемы, потому что некоторые функции INPUTS не существуют.
Рабочая область
var1 = 1
var2 = 2
var4 = 4
Код для включения в функцию
if exist('var3','var')
disp('var 3 exists')
else
disp('var 3 does not exist')
end
Следующая функция НЕ будет работать, потому что она вызывает переменную 3, которая не существует.
вызывающая функция
runCode(var1, var2, var3, var4)
Первоначально я написал эту предыдущую функцию и проверил код для isnan
вместо exist
, но это не очень хорошая практика, и поскольку функция вызывается часто, я не хочу обновлять настройку этой функции всякий раз, когда вносятся изменения в код.
if ~exist("var1", "var"), var1= NaN; end
if ~exist("var2", "var"), var2= NaN; end
if ~exist("var3", "var"), var3= NaN; end
if ~exist("var4", "var"), var4= NaN; end
Я не хочу использовать eval
, и загрузка рабочего пространства вызвала у меня проблемы, потому что присутствует куча цифр, и это портит счетчик цифр в более поздней части кода. Единственные идеи, которые я правильно знаю, - это сценарий установки для предыдущих операторов if или каким-то образом сохранить все данные рабочего пространства в структуру или что-то еще, а затем присвоить значениям соответствующую строку who
(дает имена переменных рабочего пространства).
Спасибо за любые идеи, которые вы, ребята, могли бы иметь