Matlab: переименование элементов рабочей области из командного окна?

Графический интерфейс Matlab позволяет мне переименовать любой элемент в рабочей области, щелкнув элемент правой кнопкой мыши и выбрав опцию «переименовать». Можно ли это сделать и из командного окна?


person Mike    schedule 11.05.2011    source источник


Ответы (2)


Это то, что вы можете легко проверить на себе, и вы должны это сделать. Это лучший способ учиться, открывать.

В любом случае, ответ отрицательный, вы не можете изменить имя переменной таким образом из командного окна. Командное окно в основном предназначено только для ввода с клавиатуры.

Изменить: вопрос, по-видимому, заключался в том, чтобы сделать это изменение с помощью команды в командном окне, а не с помощью мыши. (Почему бы не сказать нам об этом заранее?)

Нет явной команды для такого переименования. Однако ничто не мешает вам написать его самостоятельно. Например...

function renamevar(oldname,newname)
% renames a variable in the base workspace
% usage: renamevar oldname newname
% usage: renamevar('oldname','newname')
%
% renamevar is written to be used as a command, renaming a single
% variable to have a designated new name
%
% arguments: (input)
%  oldname - character string - must be the name of an existing
%          variable in the base matlab workspace.
%
%  newname - character string - the new name of that variable
%
% Example:
% % change the name of a variable named "foo", into a new variable
% % with name "bahr". The original variable named "foo" will no
% % longer be in the matlab workspace.
%
% foo = 1:5;
% renamevar foo bahr

% test for errors
if nargin ~= 2
  error('RENAMEVAR:nargin','Exactly two arguments are required')
elseif ~ischar(oldname) || ~ischar(newname)
  error('RENAMEVAR:characterinput','Character input required - renamevar is a command')
end

teststr = ['exist(''',oldname,''',''var'')'];
result = evalin('base',teststr);
if result ~= 1
  error('RENAMEVAR:doesnotexist', ...
    ['A variable named ''',oldname,''' does not exist in the base workspace'])
end

% create the new variable
str = [newname,' = ',oldname,';'];
try
  evalin('base',str)
catch
  error('RENAMEVAR:renamefailed','The rename failed')
end

% clear the original variable
str = ['clear ',oldname];
evalin('base',str)
person Community    schedule 11.05.2011
comment
Я думаю, что вы неправильно меня поняли здесь. Мой вопрос заключался в том, есть ли функция, которая позволяет мне делать то же самое через командное окно. - person Mike; 11.05.2011

Вы можете переименовать переменные в командном окне следующим образом:

%# create a variable
a = 3;

%# rename a to b
b = a;clear('a');

ИЗМЕНИТЬ

Если вы хотите переименовать свою переменную в другую переменную, хранящуюся в строке, вы можете использовать ASSIGNIN

a = 3;
newVarName = 'b';
assignin('base',newVarName,a);
clear('a') %# in case you want to get rid of the variable a
person Jonas    schedule 11.05.2011
comment
Конечно, я это уже знаю. Моя проблема в том, что я хочу переименовать многие элементы, которые я импортировал через цикл, с помощью переменной x(i), которая возвращает строку. Однако похоже, что в левой части уравнения нельзя использовать такую ​​переменную, как x(i). Также см. мой вопрос здесь: stackoverflow.com/questions/5964218/ - person Mike; 11.05.2011
comment
@Mike: Тогда, наверное, я неправильно понял твой вопрос. Я обновил свой ответ. - person Jonas; 11.05.2011
comment
спасибо Джонас, я думаю, что я выберу решение, которое я получил для другого вопроса, на который я ссылался. - person Mike; 11.05.2011