Loop For extract maximum rows of matrix based on vectors
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
abdullah al-dulaimi
el 7 de Dic. de 2022
Respondida: Fangjun Jiang
el 7 de Dic. de 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 comentario
Walter Roberson
el 7 de Dic. de 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 ?
Respuesta aceptada
Voss
el 7 de Dic. de 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 comentarios
Más respuestas (1)
Fangjun Jiang
el 7 de Dic. de 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 comentarios
Ver también
Categorías
Más información sobre Logical en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!