Matlab: buyruqlar oynasidan ish maydoni elementlarini qayta nomlash?

Matlabning GUI elementni sichqonchaning o‘ng tugmasi bilan bosish va “nomini o‘zgartirish” variantini tanlash orqali ish maydonidagi istalgan element nomini o‘zgartirishga imkon beradi. Buni buyruq oynasidan ham qilish mumkinmi?


person Mike    schedule 11.05.2011    source manba


Javoblar (2)


Bu o'zingiz uchun osongina sinab ko'rishingiz mumkin bo'lgan narsalar va siz buni qilishingiz kerak. Bu o'rganish, kashf qilishning eng yaxshi usuli.

Nima bo'lishidan qat'iy nazar, javob yo'q, siz buyruqlar oynasidan o'zgaruvchi nomini shu tarzda o'zgartira olmaysiz. Buyruqlar oynasi asosan klaviaturadan kiritish uchun mo'ljallangan.

Tahrirlash: Savol, sichqoncha orqali emas, balki buyruq oynasidagi buyruq orqali o'zgartirishni amalga oshirish haqida edi. (Nega buni bizga oldindan aytmaysiz?)

Bunday o'zgartirishni amalga oshiradigan aniq buyruq yo'q. Biroq, uni o'zingiz yozishingizga hech narsa to'sqinlik qilmaydi. Masalan...

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
O'ylaymanki, siz bu erda meni noto'g'ri tushundingiz. Mening savolim buyruqlar oynasi orqali xuddi shunday qilishimga imkon beradigan funksiya bormi edi. - person Mike; 11.05.2011

Buyruqlar oynasida o'zgaruvchilar nomini quyidagicha o'zgartirishingiz mumkin:

%# create a variable
a = 3;

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

TAHRIRLASH

Agar oʻzgaruvchingizni satrda saqlangan boshqa oʻzgaruvchiga oʻzgartirmoqchi boʻlsangiz, ASSIGNIN dan foydalanishingiz mumkin.

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
Albatta, men buni allaqachon bilaman. Muammo shundaki, men qatorni qaytaradigan x(i) o'zgaruvchisi orqali tsikl orqali import qilgan ko'plab elementlarning nomini o'zgartirmoqchiman. Tenglamaning chap tomonida x(i) kabi o'zgaruvchidan foydalanish mumkin emasga o'xshaydi. Iltimos, mening savolimga ham qarang: stackoverflow.com/questions/5964218/ - person Mike; 11.05.2011
comment
@Mayk: O'ylaymanki, men sizning savolingizni to'g'ri tushunmadim. Men javobimni yangiladim. - person Jonas; 11.05.2011
comment
Rahmat Jonas, men o'zim aytgan boshqa savol uchun olgan yechim bilan boraman deb o'ylayman. - person Mike; 11.05.2011