Matlab:如何在命令窗口中重命名工作区元素?

3
Matlab的图形用户界面(GUI)允许我通过右键单击元素并选择“重命名”选项来重命名工作区中的任何元素。在命令窗口中也可以这样做吗?
2个回答

4

以下是一些你可以轻松测试的内容,你应该这样做。这是学习和发现的最佳方式。

无论如何,答案是否定的,你不能通过命令窗口以那种方式更改变量名。命令窗口主要是用于键盘输入的。

编辑:显然,问题是关于通过命令窗口执行该更改,而不是通过鼠标执行。(为什么不事先告诉我们呢?)

没有明确的命令可以进行重命名。但是,你可以自己编写它。例如...

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)

我觉得你在这里误解了我的意思。我的问题是是否有一个函数可以让我通过命令窗口完成同样的操作。 - Mike

2

您可以按以下方法在命令窗口中重命名变量:

%# 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

当然,我已经知道了。我的问题是,我想通过一个返回字符串的变量x(i)来重命名通过循环导入的许多元素。看起来不可能在等式的左侧使用像x(i)这样的变量。请参见我的问题:http://stackoverflow.com/questions/5964218/matlab-how-can-i-use-a-variable-to-create-matlab-elements - Mike
@Mike:我想我没有正确理解你的问题。我已经更新了我的答案。 - Jonas
谢谢Jonas,我想我会采用我在其他相关问题中得到的解决方案。 - Mike

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接