How do I create variable names from string variables

3 visualizaciones (últimos 30 días)
selena
selena el 12 de Ag. de 2013
If I have 2 variables, ID has a column of strings like 'height' or 'speed', data has a column of corresponding variables.
ie
ID = 'height' 'height' 'height' 'speed' 'speed'
data = 10;10;7;2.4;2.1
How do I create the variable 'height' and a variable speed with the corresponding data.
ie
height = 10;10;7
speed = 2.4;2.1

Respuesta aceptada

Matt Kindig
Matt Kindig el 12 de Ag. de 2013
Editada: Matt Kindig el 12 de Ag. de 2013
Instead, make them fields of a structure. You can do something like this:
vars = struct(); %structure to hold your variables
ID = {'height' 'height' 'height' 'speed' 'speed'};
data = [10;10;7;2.4;2.1];
fields = unique(ID); %get variable names as field names
for k=1:length(fields), %for each unique variable
fld= fields{k}; %field name
tf = ismember(ID, fld); %which corresponding data
vars.(fld) = data(tf); %assign to field
end
vars.height; %height variables
vars.speed; %speed variables
  2 comentarios
selena
selena el 12 de Ag. de 2013
Thanks, how would I assign a date stamp to the variables?
Matt Kindig
Matt Kindig el 12 de Ag. de 2013
How do you mean? Do you have an additional field in 'ID' that is called 'date' or similar? I wrote this code to be extensible to an arbitrary set of fields, so I think that additional ID elements (with corresponding values in 'data') should work fine.

Iniciar sesión para comentar.

Más respuestas (1)

Andrei Bobrov
Andrei Bobrov el 13 de Ag. de 2013
Editada: Andrei Bobrov el 13 de Ag. de 2013
ID = {'height' 'height' 'height' 'speed' 'speed'};
data = [10;10;7;2.4;2.1];
[i0,i1,i1] = unique(ID);
vars = cell2struct(accumarray(i1(:),data(:),[],@(x){x}),i0,1);
  1 comentario
Matt Kindig
Matt Kindig el 15 de Ag. de 2013
I should have figured there was an easy way to do this using accumarray. Try as I might, I still can't get the hang of that function.

Iniciar sesión para comentar.

Categorías

Más información sobre Matrix Indexing en Help Center y File Exchange.

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by