MATLAB Answers

Anand CU
0

Convert Cell to Struct

Asked by Anand CU
on 20 Jul 2017
Latest activity Commented on by Anand CU
on 20 Jul 2017
I'm trying to access contents of a cell array which has 4 structures.
celldisp(tracks_array);
gives output:
tracks_array{1} =
kalmanFilter: [1×1 vision.KalmanFilter]
id: 0
totalVisibleCount: 1
bbox: [390 171 70 39]
consecutiveInvisibleCount: 0
age: 1
tracks_array{2} =
kalmanFilter: [1×1 vision.KalmanFilter]
id: 1
totalVisibleCount: 1
bbox: [459 175 40 24]
consecutiveInvisibleCount: 0
age: 1
tracks_array{3} =
kalmanFilter: [1×1 vision.KalmanFilter]
id: 2
totalVisibleCount: 1
bbox: [220 156 159 91]
consecutiveInvisibleCount: 0
age: 1
tracks_array{4} =
kalmanFilter: [1×1 vision.KalmanFilter]
id: 3
totalVisibleCount: 1
bbox: [510 159 68 49]
consecutiveInvisibleCount: 0
age: 1
Then I Use a for loop to iterate through the elements..
for elmen = tracks_array
structtt=cell2struct(elmen(1),{'id','bbox','kalmanFilter','age','totalVisibleCount','consecutiveInvisibleCount'},2);
This gives error of
Error using cell2struct
Number of field names must match number of fields in new structure.
Then I used this inside the for loop
disp(elmen)
celldisp(elmen)
gives,
[1×1 struct]
elmen{1} =
kalmanFilter: [1×1 vision.KalmanFilter]
totalVisibleCount: 1
bbox: [390 171 70 39]
consecutiveInvisibleCount: 0
id: 0
age: 1
I want to access the elements by their field names. How do I do this?
Right now if I try:
elmen.id
or
getfield(elmen,'id')
gives error
Struct contents reference from a non-struct array object.

  0 Comments

Sign in to comment.

2 Answers

Answer by Andrei Bobrov
on 20 Jul 2017
 Accepted Answer

structtt = cat(1,tracks_array{:});

Answer by Massimo Zanetti on 20 Jul 2017

  1 Comment

i get Struct contents reference from a non-struct array object. error

Sign in to comment.