# Can anyone explain me why M' is taken in the following code?

87 views (last 30 days)

Show older comments

%{

Question : Write a function called minimax that takes M, a matrix input argument and

returns mmr, a row vector containing the absolute values of the difference

between the maximum and minimum valued elements in each row. As a second

output argument called mmm, it provides the difference between the maximum

and minimum element in the entire matrix

%}

%Code :

function [mmr, mmm] = minimax(M)

mmr = max(M') - min(M');

mmm = max(M, [], 'all') - min(M, [], 'all');

##### 5 Comments

Stephen23
on 22 Dec 2022

### Answers (5)

Walter Roberson
on 2 Aug 2020

By default, min() and max() operate along the first non-scalar dimension. If you have a 2D array, m x n, with m and n both not 1, then that means that min() or max() of the array would produce a 1 x n output -- it has operated along columns, producing one result for each column.

Now suppose you transpose the m x n array to become n x m, with the rows becoming columns and the columns becoming rows, and you min() or max that. You will get a 1 x m result -- one result for each of what were originally rows.

Thus, min(M') is one way of producing a minimum for each row (but it has a problem if the data is complex-valued.)

More clear and robust is to use the syntax min(M,[],2) to process dimension #2 specifically, producing one result for each row.

##### 0 Comments

Shubham Shah
on 22 Dec 2022

function [mmr,mmm]= minimax(M)

mmt = [max(M,[],2)-min(M,[],2)]

mmr = mmt'

mmm = max(M, [], 'all') - min(M, [], 'all')

end

##### 2 Comments

Shubham Shah
on 22 Dec 2022

Question : Write a function called minimax that takes M, a matrix input argument and

returns mmr, a row vector containing the absolute values of the difference

between the maximum and minimum valued elements in each row. As a second

output argument called mmm, it provides the difference between the maximum

and minimum element in the entire matrix

Abdul Rafay
on 28 Oct 2023

function [mmr,mmm] = minimax(A)

mmr = max(A')-min(A');

a = A(:);

mmm = max(a)-min(a);

end

Japhet Kyarukamba
on 20 Apr 2024

Edited: Japhet Kyarukamba
on 20 Apr 2024

% function // editor window

function [mmr, mmm] = minimax(A)

mmr = max(A, [], 2) - min(A, [], 2); % Compute maximum and minimum along rows

a = A(:); % Reshape A into a column vector to find the absolute difference over the entire matrix

mmm = max(a)-min(a); % Find the maximum and minimum values across the entire matrix

end

% Code to call your function? // command window

[mmr, mmm] = minimax([1:3;4:6;7:9])

% Generate a random matrix of size 1x3 with integers between 1 and 100

random_matrix = randi([1, 100], 1, 3)

##### 0 Comments

Japhet Kyarukamba
on 20 Apr 2024

Alternatively,

% function // editor window

function [mmr, mmm] = minimax(M)

% Transpose M to work on each row, then calculate the differences.

mmr = max(M') - min(M'); % Calculate the absolute differences between maximum and minimum elements in each row.

mmm = max(M, [], 'all') - min(M, [], 'all') % Calculate the absolute difference between maximum and minimum elements in the entire matrix.

end

% Code to call your function? // command window

[mmr, mmm] = minimax([1:3;4:6;7:9])

% Generate a random matrix of size 1x3 with integers between 1 and 100

random_matrix = randi([1, 100], 1, 3)

##### 1 Comment

Stephen23
on 20 Apr 2024

Fails for any column vector:

[adr,dom] = minimax([1;2;3])

function [mmr, mmm] = minimax(M)

% Transpose M to work on each row, then calculate the differences.

mmr = max(M') - min(M'); % Calculate the absolute differences between maximum and minimum elements in each row.

mmm = max(M, [], 'all') - min(M, [], 'all'); % Calculate the absolute difference between maximum and minimum elements in the entire matrix.

end

Tip for the future: read the thread thoroughly before posting anything new:

### See Also

### Categories

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!