How can I index through logicals?
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Rookie Programmer
am 10 Jul. 2023
Kommentiert: Rookie Programmer
am 10 Jul. 2023
How can I index/loop through table(T) to get the rows with logical 1s in T.logical. Also, check if the logical is 0s, if so get the respective row with the string 'High' from T.Level?
T = table;
A = randi([0, 1], 5, 5);
c1 = A(:,1);
c2 = A(:,2);
c3 = A(:,3);
c4 = A(:,4);
c5 = A(:,5);
vert = vertcat(c1, c2, c3);
Types = {'A', 'B', 'C', 'D', 'A', 'B', 'C', 'D', 'A', 'B', 'C', 'D', 'A', 'B', 'C'}';
Level = {'Low', 'Medium', 'High', 'Low', 'Medium', 'High', 'Low', 'Medium', 'High', 'Low', 'Medium', 'High', 'Low', 'Medium', 'High'}';
T.Types = Types;
T.logical = vert;
T.Level = Level;
TrueTable = table;
TrueTable.UniqueType = unique(T.Types);
numTypes = height(TrueTable);
TrueTable.Total = cell(numTypes, 1);
0 Kommentare
Akzeptierte Antwort
Voss
am 10 Jul. 2023
Bearbeitet: Voss
am 10 Jul. 2023
Construct table T:
A = randi([0, 1], 5, 5);
vert = reshape(A(:,1:3),[],1);
Types = {'A', 'B', 'C', 'D', 'A', 'B', 'C', 'D', 'A', 'B', 'C', 'D', 'A', 'B', 'C'}';
Level = {'Low', 'Medium', 'High', 'Low', 'Medium', 'High', 'Low', 'Medium', 'High', 'Low', 'Medium', 'High', 'Low', 'Medium', 'High'}';
T = table(Types,vert,Level);
T = renamevars(T,'vert','logical')
Get a new table (called rows) that contains the rows of T where logical is 1 or Level is 'High':
idx = T.logical | strcmp(T.Level,'High');
rows = T(idx,:)
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Matrix Indexing finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!