Есть ли недокументированный способ сделать переменную «невидимой» в Matlab, чтобы она все еще существовала, но не отображалась в списке рабочей области?
Как скрыть переменную из рабочей области в Matlab
Ответы (3)
Одна вещь, которую вы можете сделать, это иметь глобальные переменные. Интересным их свойством является то, что даже когда вы очищаете рабочую область, они все еще существуют в памяти, если только вы специально не очистите глобальные переменные. Пример ниже.
global hidden_var
hidden_var = 1;
clear
global hidden_var
hidden_var
Я все еще не совсем уверен, зачем вам вообще нужна эта функция, но это способ, которым вы можете «скрыть» переменные из рабочей области.
clear
приведет к тому, что переменная не появится при выдаче оператора who
, но она все равно будет отображаться в глобальной рабочей области с who global
; 2) После clear
вы не сможете получить доступ к сохраненному значению, пока не выполните повторное объявление с помощью global hidden_var
, после чего оно снова будет полностью видно в рабочей области; 3) clear all
очистит даже глобальное рабочее пространство, удалив сохраненное значение.
- person gnovice; 15.08.2017
Единственный способ, который я могу придумать, - это использовать функцию так же, как MATLAB определяет pi
, i
и j
. Например:
function value = e
value = 2.718;
end
В вашей рабочей области не будет переменной с именем e
, но вы можете используйте его, как если бы были:
a = e.^2;
Технически она «невидима» только в том смысле, что такие функции, как who
и whos
, не указывают ее как переменную, но функция все равно должна существовать на вашем < href="https://www.mathworks.com/help/matlab/matlab_env/what-is-the-matlab-search-path.html" rel="noreferrer">путь MATLAB и все еще может быть вызывается любым другим скриптом или функцией.
Я бы предложил сгруппировать переменные в структуру в качестве обходного пути. Выполнение приведенного ниже кода будет отображаться только как mainVariable
в вашей рабочей области. Недостатком является то, что вам придется вводить все это, чтобы получить доступ к переменным, но вы можете сократить имена.
mainVariable.actualVariable1 = 1 mainVariable.actualVariable2 = [2, 4] mainVariable.actualVariable3 = 'Hello World'