how to access an array using a string?

8 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 Matrix Indexing 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