Перечислите переменные рабочего пространства в функции - PullRequest
0 голосов
/ 15 октября 2019

В графическом интерфейсе я бы хотел, чтобы пользователь мог импортировать значение из рабочей области. Поэтому я хочу показать список переменных, определенных в рабочей области, и позволить пользователю выбрать одну. Нечто подобное делается, например, в cftool для данных x - и y - (и z -).

Однако, если я использую who внутри функции, он не перечисляет переменные в рабочей области (Примечание: следующий код создает или перезаписывает переменную mytestvar в вашей рабочей области):

function listwsvars()
    assignin('base','mytestvar',1);
    vars = whos('global');

    vars
end

Результат тот же, если я опускаю globalаргумент или использовать who вместо whos.

Есть идеи, как получить список переменных в рабочей области? И, в свою очередь, как я могу получить к ним доступ?

1 Ответ

6 голосов
/ 15 октября 2019

По умолчанию whos возвращает переменные в активном рабочем пространстве (в этом случае функция listwsvars ). С опцией global он вернет те, которые находятся в глобальной рабочей области. Если вы не определили глобальные переменные, это действительно вернет пустое значение.


Возможным решением является оценка команды whos в базовом рабочем пространстве с помощью evalin:

function listwsvars()
    assignin('base','mytestvar',1);
    vars = evalin('base','whos');

    vars
end

vars - это массив структур, содержащий информацию обо всех переменных, доступных в базовом рабочем пространстве.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...