How to compare two data sets based on maximum value
11 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commenti
Risposte (1)
Walter Roberson
il 10 Ott 2017
for ii = 1 : j
if rightMAX(ii) >= leftMAX(ii)
A(j, :) = A(j, end:-1:1);
end
end
3 Commenti
Walter Roberson
il 11 Ott 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.
Vedere anche
Categorie
Scopri di più su Shifting and Sorting Matrices in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!