How can i delete max values for each 5 rows in vector
5 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
abdullah al-dulaimi
el 29 de Dic. de 2022
Comentada: Star Strider
el 29 de Dic. de 2022
i have this vector A= 1 14 4 23 3 8 9 12 4 5 2 4 19 20 22
A=A'
The result will be R= 1 14 4 3 8 9 4 5 2 4 19 20
0 comentarios
Respuesta aceptada
Star Strider
el 29 de Dic. de 2022
This looks like homework, however I need something to do this morning —
A = [1 14 4 23 3; 8 9 12 4 5; 2 4 19 20 22];
I = A<max(A,[],2); % Logical Matrix
for k = 1:size(A,1)
R(k,:) = A(k,I(k,:)); % Loop Necessary To Preserve Structure
end
R
.
2 comentarios
Star Strider
el 29 de Dic. de 2022
Now the transpose makes snese, with respect to ‘rows’.
Convert it to a matrix for the comparison, then back —
A= [1 14 4 23 3 8 9 12 4 5 2 4 19 20 22];
A = A.';
A = reshape(A,[],3);
for k = 1:size(A,2)
R(:,k) = A(A(:,k)<max(A(:,k)),k);
end
R = R(:).'
Más respuestas (1)
Davide Masiello
el 29 de Dic. de 2022
Editada: Davide Masiello
el 29 de Dic. de 2022
The following code will apply to any lenght of A and any length N of window from which to delete the maximum, provided that length(A)/N is an integer.
A = [1 14 4 23 3 8 9 12 4 5 2 4 19 20 22];
R = rmvMaxEveryN(A,5)
function out = rmvMaxEveryN(array,N)
[~,idx] = max(reshape(array,[N,length(array)/N]),[],1);
idx = idx+(0:N:length(array)-N);
array(idx) = [];
out = array;
end
3 comentarios
Davide Masiello
el 29 de Dic. de 2022
Sorry I realised later there was a mistake and adjusted my answer.
Ver también
Categorías
Más información sobre Matrix Indexing 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!