Getting one field data using other field in struct
Ältere Kommentare anzeigen
Hello, I have a structure

I want to get the data of 2nd field but not using app.temp.Channel(2).data
I want to use the name field instead.
something like
mydata = app.temp.Channel.data(app.temp.Channel.name == 'U1');
but I have error (Error using == ; Too many input arguments).
May I know some suggestions, How to do this in a simple manner without using complex for loops.
11 Kommentare
John D'Errico
am 13 Feb. 2020
You posted the same question 3 times. I'll close two of them.
Temu Gautama
am 13 Feb. 2020
Does this work?
app.temp.Channel.('U1')
Timon Rayis
am 13 Feb. 2020
Timon Rayis
am 13 Feb. 2020
Temu Gautama
am 13 Feb. 2020
Ah, sorry, misinterpreted the table. Then it should be something like this:
mydata = app.temp.Channel.data( cellfun(@( x )strcmp( x, 'U1' ), {app.temp.Channel(:).name} ));
Timon Rayis
am 13 Feb. 2020
Bearbeitet: Timon Rayis
am 13 Feb. 2020
Temu Gautama
am 13 Feb. 2020
Hmm let's see
{app.temp.Channel(:).name}
should give you
ans =
'U1' 'U2' 'U3'
So if you do the cellfun-strcmp
cellfun(@( x )strcmp( x, 'U1' ), {app.temp.Channel(:).name} )
it should yield
ans =
1 0 0
which is then used for (logical) indexing. So I don't really see where the error is coming from. Could you try these lines separately?
Timon Rayis
am 13 Feb. 2020
Timon Rayis
am 13 Feb. 2020
Bearbeitet: Timon Rayis
am 13 Feb. 2020
Timon Rayis
am 13 Feb. 2020
Timon Rayis
am 13 Feb. 2020
Antworten (0)
Kategorien
Mehr zu Structures finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!