How can i delete max values for each 5 rows in vector
조회 수: 1 (최근 30일)
이전 댓글 표시
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
채택된 답변
Star Strider
2022년 12월 29일
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
Star Strider
2022년 12월 29일
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(:).'
추가 답변 (1개)
Davide Masiello
2022년 12월 29일
편집: Davide Masiello
2022년 12월 29일
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
참고 항목
카테고리
Help Center 및 File Exchange에서 Logical에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!