How to Search a struct array?

27 visualizzazioni (ultimi 30 giorni)
Dharmesh Joshi
Dharmesh Joshi il 25 Ott 2022
Commentato: Dharmesh Joshi il 25 Ott 2022
Hi
I am new to Matlab and would like to know if i can search a array strucuture without using a loop.
I have strucuture array with 8 feilds. Please see below.
I am trying the following:
K>> alldata(ID=="864475047572713").Data
Unrecognized function or variable 'ID'.
This seems to be wrong, but what is the correct way of doing this?
K>> alldata
alldata =
1×8 struct array with fields:
ID
location
electrosensor_values
Data
K>> alldata(1)
ans =
struct with fields:
ID: "864475047690895"
location: "GPS12121"
electrosensor_values: [1×1 struct]
Data: [81603×12 timetable]
K>> alldata(2)
ans =
struct with fields:
ID: "864475047636435"
location: "GPS12121"
electrosensor_values: [1×1 struct]
Data: [79899×12 timetable]
K>> alldata(3)
ans =
struct with fields:
ID: "864475047572713"
location: "GPS12121"
electrosensor_values: [1×1 struct]
Data: [78759×12 timetable]
K>> alldata(4)
ans =
struct with fields:
ID: "864475047564256"
location: "GPS12121"
electrosensor_values: [1×1 struct]
Data: [84734×12 timetable]

Risposta accettata

Matt J
Matt J il 25 Ott 2022
Modificato: Matt J il 25 Ott 2022
Perhaps this is what you meant?
somedata = alldata([alldata.ID]=="864475047572713")
  1 Commento
Dharmesh Joshi
Dharmesh Joshi il 25 Ott 2022
Yes it seems [alldata.ID] solved the issue.
Thanks

Accedi per commentare.

Più risposte (1)

dpb
dpb il 25 Ott 2022
With the ID field being a string, probably the easiest syntax is simply
ID=="864475047572713";
idx=find(matches([alldata.ID],ID));
then idx is the index into the struct array of interest; all properties are then as
tDataID=alldata(idx).Data;
Now, in the specific case, you can access the table as normal thru the tDataID table variable.

Categorie

Scopri di più su Structures in Help Center e File Exchange

Prodotti


Release

R2022b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by