Creating a variable from part of a string
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Benjamin
el 7 de Nov. de 2018
I have a string:
x='dr_1e-2_A1_OFF_A2_OFF.txt';
Is there a way to create variables from this string?
How can I set
dr = 1e-2
by only referring to the string? How can I set
A1 = 0 (since Off)
by only referring to the string?
Then if I want to create a title from the variables, could I?
Like:
title('dr = ' insert dr variable )
1 comentario
Stephen23
el 7 de Nov. de 2018
"Then if I want to create a title from the variables, could I?"
You certainly could... but this is not recommended. Magically creating variable names is one way that beginners force themselves into writing slow, complex, buggy code which is hard to debug. Read this to know why:
Respuesta aceptada
Stephen23
el 7 de Nov. de 2018
Editada: Stephen23
el 7 de Nov. de 2018
I recommend that you use a structure instead of magically accessing variable names:
>> x = 'dr_1e-2_A1_OFF_A2_OFF.txt';
>> [~,N] = fileparts(x);
>> C = regexp(N,'_','split');
>> S = struct(C{:});
>> S.dr
ans = 1e-2
>> S.A1
ans = OFF
>> S.A2
ans = OFF
You can easily add a conversion to numeric as well:
>> [~,N] = fileparts(x);
>> C = regexp(N,'_','split');
>> V = str2double(C);
>> X = ~isnan(V);
>> C(X) = num2cell(V(X));
>> S = struct(C{:});
>> S.dr
ans = 0.010000
"Then if I want to create a title from the variables,could I?"
3 comentarios
James Tursa
el 7 de Nov. de 2018
Yikes! The rest of my edited comment didn't make it, re the splitting and struct stuff ...
Más respuestas (0)
Ver también
Categorías
Más información sobre Workspace Variables and MAT-Files en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!