Borrar filtros
Borrar filtros

How to index the value returned by a Map

24 visualizaciones (últimos 30 días)
Bill Tubbs
Bill Tubbs el 4 de Feb. de 2020
Comentada: Bill Tubbs el 19 de Mzo. de 2020
I'm new to MATLAB so please help me out here.
I have a containers.Map that contains cell arrays. I want to get one of the cell arrays and immediately index an item from it.
I tried simply putting the curly braces after the Map's key index and got this error message:
>> stats('u_est')
ans =
1×5 cell array
{[525]} {[0.9834]} {[-0.0261]} {[-1.0166]} {[1.0009]}
>> stats('u_est'){2}
Error: Indexing with parentheses '()' must appear as the last operation of a valid indexing expression.
Obviously I can do it by assigning a new variable but I think there must be a way to do it directly:
>> values = stats('u_est');
>> values{2}
ans =
0.9834
Also, what does it mean by "Indexing with parentheses '()' must appear as the last operation of a valid indexing expression"?
thanks
  2 comentarios
Tobias Ohrmann
Tobias Ohrmann el 19 de Mzo. de 2020
@Bill Tubbs I have exactly the same problem, did you manage to solve it? Defining a new variable seems very laborious here..
Bill Tubbs
Bill Tubbs el 19 de Mzo. de 2020
No. As far as I know, this kind of 'chained expression evaluation' is an inherent non-feature of MATLAB. The only solution I know is to switch to another language such as Python that parses all the sub-components of an expression with a consistent set of rules and can thus handle compound operations on any objects of valid type.

Iniciar sesión para comentar.

Respuestas (1)

KSSV
KSSV el 4 de Feb. de 2020
YOu have to use
u_est = values{2} ;
For arrays the indexing is done using (), for cells indexing is done using {}.
  4 comentarios
Bill Tubbs
Bill Tubbs el 4 de Feb. de 2020
Thanks but I am asking if it is possible to get a cell array from a Map and immediately index an item from it. Or is this impossible to do in one statement? If you look at the second code segment it shows that I know how to do it in two steps. The question is can I do it in one? Like this:
stats('u_est'){2}
Bill Tubbs
Bill Tubbs el 4 de Feb. de 2020
Editada: Bill Tubbs el 4 de Feb. de 2020
Basically I'm trying to do this in MATLAB:
>>> stats = {'u_est': [525, 0.9834, -0.010]}
>>> stats['u_est'][1]
0.9834

Iniciar sesión para comentar.

Categorías

Más información sobre Call Python from MATLAB 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