Loop For extract maximum rows of matrix based on vectors
5 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
abdullah al-dulaimi
il 7 Dic 2022
Risposto: Fangjun Jiang
il 7 Dic 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 Commento
Walter Roberson
il 7 Dic 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 ?
Risposta accettata
Voss
il 7 Dic 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 Commenti
Più risposte (1)
Fangjun Jiang
il 7 Dic 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 Commenti
Vedere anche
Categorie
Scopri di più su Logical in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!