How to Search a struct array?

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]

 采纳的回答

Matt J
Matt J 2022-10-25
编辑:Matt J 2022-10-25
Perhaps this is what you meant?
somedata = alldata([alldata.ID]=="864475047572713")

更多回答(1 个)

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.

类别

在 帮助中心 和 File Exchange 中查找有关 Structures 的更多信息

产品

版本

R2022b

Community Treasure Hunt

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

Start Hunting!

Translated by