Borrar filtros
Borrar filtros

Accessing and editing workspace values in matlab code

5 visualizaciones (últimos 30 días)
Sadanand
Sadanand el 8 de Jul. de 2011
Respondida: yasser el 11 de Nov. de 2013
I need to search a variable in workspace and edit its value at some specific index. How do i access, edit that variable and save new value back to workspace. Thanks,

Respuesta aceptada

Friedrich
Friedrich el 8 de Jul. de 2011
You code looks correct so far (little typo in the assignin command, it must be array instead of arraya). But I think this should be faster since you have to copy one value only:
function test(mystruct)
for i=1:1
assignin('base','tmp',mystruct(i).value)
cmd_string = [mystruct(i).name,'(',num2str(mystruct(i).rowIndex),',',num2str(mystruct(i).colIndex),')=tmp;clear tmp'];
evalin('base',cmd_string)
end
end
I tested it with:
a = [1 2 3 4]
mystruct.name = 'a'
mystruct.rowIndex = 1;
mystruct.colIndex = 1;
mystruct.value = 14;
test(mystruct)

Más respuestas (2)

Friedrich
Friedrich el 8 de Jul. de 2011
I think what you are looking for is the evalin command. So something like
evalin('base','a=3')
Or if you really have to search you can do:
var = evalin('base','whos;')
  6 comentarios
Friedrich
Friedrich el 8 de Jul. de 2011
Sure evalin('base',x) throws an error since x is not present it the ML workspace. you have to ways here how to proceed and both are stated above:
1.) assignin('base','ABC',x) %will overwrite variable ABC with the values of x
2.)assignin('base','x',x) %copy the variable in the ML Workspace
evalin('base','ABC(some_index) = x; clear x')
Sadanand
Sadanand el 8 de Jul. de 2011
Sorry to borrow your time again. Here is my actual problem. I have function that takes array of structure. Structure has following fields.
name, rowIndex, columnIndex, value. For each structure in the structure array, i need to get struct.name and search it in workspace and replace value of this workspace variable with struct.value at index struct.rowIndex and struct.colIndex.
Here is what i have written.
function myFuction(mystruct)
for i=1: 2
array = evalin('base', mystruct(i).name);
array(mystruct(i).rowIndex, mystruct(i).colIndex) = mystruct(i).value;
assignin('base', mystruct(i).name, arraya);
clear array;
end
end
Thank You for your help.

Iniciar sesión para comentar.


yasser
yasser el 11 de Nov. de 2013
am looking for value in some workspaces, can i get name of workspace and index of [row,col]? how to do that?

Categorías

Más información sobre Startup and Shutdown en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by