how to access an array using a string?

5 visualizaciones (últimos 30 días)
na ja
na ja el 3 de Oct. de 2016
Comentada: na ja el 5 de Oct. de 2016
I have 5 arrays which store the past 100 values related with 5 entities of a time series. time series contains of data values and each data value has one corresponding entity.
z = dataset('XLSFile','timeseries.xlsx');
var1_a = z(9698:9797);
var2_a = z(23298:23397);
var3_a = z(93372:93471);
var4_a = z(127688:127787);
var5_a = z(206878:206977);
% each array is of 100 elements.
% for future values of time series, I need to call one of the array to add
% 'new data value' to it and delete the oldest one out of it.
%I tried calling the array using 'strcat'.
same_val = strcmp(next element,'var1_a');
% 'next element' is any one from var1, var2, var3, var4 or var5.
% I need to access var1_a, var2_a.. and so on respectively for detected 'next element,.
if (condition is satisfied)
ary = strcat(next element,'_a');
ary = [ary(2:100);new data value];
else
(do something else)
end
but I am getting error for this. What should be the right way?

Respuesta aceptada

Star Strider
Star Strider el 3 de Oct. de 2016
I have no idea what you’re doing, but the way you are doing it is inefficient if not just wrong.
Use a cell array instead:
var_a{1} = z(9698:9797);
var_a{2} = z(23298:23397);
var_a{3} = z(93372:93471);
var_a{4} = z(127688:127787);
var_a{5} = z(206878:206977);
You can then access them easily in a loop.
  2 comentarios
na ja
na ja el 3 de Oct. de 2016
thanks strider, that helped!
Star Strider
Star Strider el 3 de Oct. de 2016
My pleasure!

Iniciar sesión para comentar.

Más respuestas (2)

Joe Yeh
Joe Yeh el 3 de Oct. de 2016
You can store data in a structure
s = struct;
s.var1 = z(9698:9797);
s.var2 = z(23298:23397);
s.var3 = z(93372:93471);
s.var4 = z(127688:127787);
s.var5 = z(206878:206977);
The field name of a structure is by itself a string.
You can either access the field by :
s.var1
Or, if you store the string value in another variable, you can access the field by wrapping the variable in parentheses.
tempvar = 'var1';
s.(tempvar) % this is equal to s.var1
  2 comentarios
na ja
na ja el 3 de Oct. de 2016
Editada: na ja el 5 de Oct. de 2016
Hi Joe, I have s structure field named d.NL330260 and a temporary variable grade_n which is a 1x1 cell array containing 'NL330260'. I tried implementing the following:
grade_n = 'NL330260';
d.(grade_n)
but , I get this error message.
Argument to dynamic structure reference must evaluate to a valid field name.
What could be the problem??
na ja
na ja el 5 de Oct. de 2016
OK, solved it. I put it in this way:
grade_n = 'NL330260';
d.((char(grade_n) ))

Iniciar sesión para comentar.


Walter Roberson
Walter Roberson el 3 de Oct. de 2016
Cell array and structures are good ways to handle this. You can also consider using table() objects and using container.map()

Categorías

Más información sobre Characters and Strings 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!

Translated by