How to compare two data sets based on maximum value
11 views (last 30 days)
Show older comments
I have a data set that I split into thirds and I want to sort each row in the original data A based on the left and right maximum values. How can I compare these values so if the right value is greater than the left value, the row in the data set will invert. This is what I had so far.
[leftMAX,left_idx]=max(A(:,1:33),[],2);
[rightMAX, right_idx]=max(A(:,68:100),[],2);
[middleMAX, middle_idx]=max(A(:,34:67),[],2);
j= size(A,1);
for ii = 1:j
if leftMAX >= rightMAX
continue
elseif leftMAX <= rightMAX
b = fliplr(A(j,:));
A(j,:) = b;
end
end
0 Comments
Answers (1)
Walter Roberson
on 10 Oct 2017
for ii = 1 : j
if rightMAX(ii) >= leftMAX(ii)
A(j, :) = A(j, end:-1:1);
end
end
3 Comments
Walter Roberson
on 11 Oct 2017
A = rand(52,100);
[leftMAX,left_idx]=max(A(:,1:33),[],2);
[rightMAX, right_idx]=max(A(:,68:100),[],2);
[middleMAX, middle_idx]=max(A(:,34:67),[],2);
saved_A = A; %only for cross-test
j = size(A,1);
for ii = 1 : j
if rightMAX(ii) >= leftMAX(ii)
A(ii, :) = A(ii, end:-1:1);
end
end
%cross test
for ii = 1 : j
if ~isequal(A(ii,:), saved_A(ii,:))
fprintf('Row %d not equal\n', ii);
end
end
... I originally used the wrong subscript in the assignment.
See Also
Categories
Find more on Shifting and Sorting Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!