Loop For extract maximum rows of matrix based on vectors
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
abdullah al-dulaimi
am 7 Dez. 2022
Beantwortet: Fangjun Jiang
am 7 Dez. 2022
I have this data , Consist of 3 vectors, i want to create a Loop for 1:5: size(data) , to extract rows that have maximum value for vector 2 (colomn number 2)
1 3 4
1 5 4
1 6 4
1 2 4
1 1 4
2 4 4
2 4 4
2 4 4
2 4 4
2 5 4
1 1 4
1 1 4
1 2 4
1 3 4
1 5 4
2 5 4
2 5 4
2 5 4
2 5 4
2 6 4
The result will be
1 6 4
2 5 4
1 5 4
2 6 4
1 Kommentar
Walter Roberson
am 7 Dez. 2022
Is the rule that you want to find the maximum for each group of lines that has the same value in the first column? Even if the third column is different? Or should it be groups of lines that have the same first and third column ?
Akzeptierte Antwort
Voss
am 7 Dez. 2022
data = [
1 3 4
1 5 4
1 6 4
1 2 4
1 1 4
2 4 4
2 4 4
2 4 4
2 4 4
2 5 4
1 1 4
1 1 4
1 2 4
1 3 4
1 5 4
2 5 4
2 5 4
2 5 4
2 5 4
2 6 4
];
[n_rows,n_cols] = size(data);
assert(mod(n_rows,5) == 0)
result = zeros(n_rows/5,n_cols);
for ii = 1:5:n_rows-4
temp_data = data(ii+(0:4),:);
[~,idx] = max(temp_data(:,2));
result((ii-1)/5+1,:) = temp_data(idx,:);
end
disp(result);
0 Kommentare
Weitere Antworten (1)
Fangjun Jiang
am 7 Dez. 2022
a=[1 3 4
1 5 4
1 6 4
1 2 4
1 1 4
2 4 4
2 4 4
2 4 4
2 4 4
2 5 4
1 1 4
1 1 4
1 2 4
1 3 4
1 5 4
2 5 4
2 5 4
2 5 4
2 5 4
2 6 4];
b=reshape(a',3,5,[])
c=transpose(squeeze(max(b,[],2)))
0 Kommentare
Siehe auch
Kategorien
Mehr zu Automated Driving Toolbox finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!