Ответ 1
При назначении имен переменных matlab использует "ленивую копию" , поэтому нет причин, по которым:
new_name = old_name;
clear old_name;
не должен работать.
Я хочу изменить имя переменной до ее экспорта в глобальную среду, данные очень большие, то есть я не могу скопировать ее в другую переменную и удалить первый.
данные загружаются в определенные переменные и что я тоже не могу их изменить, он используется несколько раз в заданиях фона differnet, поэтому я хочу переименовать его и отправить его переименовать, чтобы задания не смешивались и после для следующей загрузки задания и переименования и т.д.
в основном заключается в том, чтобы делать в окне команд то, что я могу сделать с помощью мыши в рабочей области....
Кто-нибудь знает, как это сделать?
При назначении имен переменных matlab использует "ленивую копию" , поэтому нет причин, по которым:
new_name = old_name;
clear old_name;
не должен работать.
Единственный способ, который я могу сделать для этого без копии памяти, - это обернуть исходные данные в объект, который является подклассом класса handle.
http://www.mathworks.co.uk/help/techdoc/matlab_oop/brfylzt-1.html
Затем вы можете "скопировать" класс дескриптора, используя обычный синтаксис
classB=classA
.. но вы делаете только псевдоним для одних и тех же данных (изменения в классе B отражаются в классе A). Это самая близкая вещь в matlab для подобной указателю семантики.
Например, создайте файл с именем myHandle
и вставьте следующий текст, чтобы определить класс.,
classdef myHandle < handle
properties
data
moreData
end
methods
end
end
Затем вы можете использовать это как обычную структуру. Из командной строки do..
>> x = myHandle
x =
myHandle handle
Properties:
data: []
moreData: []
Methods, Events, Superclasses
... мы можем затем заполнить данные.,.
>> x.data = [1 2 3 4];
>> x.moreData = 'efg';
... как только исходный объект будет заполнен данными, можно ввести псевдоним исходных данных путем ввода.,
>> y = x
Интересное происходит с x
, когда y
модифицируется, т.е.
>> y.data = [33 44 55 66];
>> disp(x)
x =
myHandle handle
Properties:
data: [33 44 55 66]
moreData: 'f'
Methods, Events, Superclasses
Вы даже можете удалить одно из имен псевдонимов.,
clear x
.. и данные будут по-прежнему доступны в другом дескрипторе данных y
. Память освобождается только в том случае, если в ней больше нет обработок (когда число ссылок достигло нуля).