How to return random unique values based only on the value in each row for the first colomn?

Technical Source
2 min readApr 20, 2023

--

To get a sense of what I am trying to do:

A = [1, 15200, 3, 5, 7; 15200, 15200, 15200, 7,0; 1,1,1,1, 15200; 9200, 1, 1,1,1];
[val] = max(A, [], 2);
indices = find(A==val);[row, col] = ind2sub(size(A), indices);
sub = [row, col];

Now sub is a array as such [ 1,2 ; 2,1 ; 2,2 ; 2,3 ; 3,5; 4,1 ] and I want that only one value with 2 in the first colomn is returned, but randomly and not only the 2,1 but sometimes 2,2 or 2,3. So the output of my code should be an array with either [ 1,2 ; 2,1 ; 3,5; 4,1 ] or [ 1,2 ; 2,2 ; 3,5; 4,1 ] or [ 1,2 ; 2,3 ; 3,5; 4,1 ]. The code should also do this if the value was not 2 so if I had a, array with [ 1,2 ; 3,1 ; 3,2 ; 3,3 ; 3,5; 4,1 ] it would return only one value for 3 in the first column.

The idea is that I select 1 of the maximum values in the rows in the A-array, but not always the first one.

NOTE:-

Matlabsolutions.com provide latest MatLab Homework Help,MatLab Assignment Help , Finance Assignment Help for students, engineers and researchers in Multiple Branches like ECE, EEE, CSE, Mechanical, Civil with 100% output.Matlab Code for B.E, B.Tech,M.E,M.Tech, Ph.D. Scholars with 100% privacy guaranteed. Get MATLAB projects with source code for your learning and research.

Here’s another way, with no loops

% Example data matrix 
% I modified this a little from your example to have
% multiple occurences of row maximum in the 5th row also, to give better
% illustration
A = [1, 15200, 3, 5, 7; 15200, 15200, 15200, 7,0; 1,1,1,1, 15200; 9200, 1, 9200,1,1];
% get array dimension for later use
numRows = size(A,1);
% Find the row maximums
rowMax = max(A,[],2);
% Mark locations where row maximums occur
isRowMax = A == rowMax;
% Make matrix with random values wherever row maximums occur and zero
% everywhere else
S = isRowMax.*rand(size(A));
% Select random column amongst occurrences of row maximums
% (column where largest element in S occurs is random)
[~,selectedColumn] = max(S,[],2);

SEE COMPLETE ANSWER CLICK THE LINK

--

--

Technical Source
Technical Source

Written by Technical Source

Simple! That is me, a simple person. I am passionate about knowledge and reading. That’s why I have decided to write and share a bit of my life and thoughts to.

No responses yet