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

85 views (last 30 days)
%{
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

Sign in to comment.

Answers (3)

Walter Roberson
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.

Shubham Shah
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
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
Stephen23
Stephen23 on 28 Oct 2023
Edited: Stephen23 on 28 Oct 2023
Nice, but why the superfluous square brackets and no semi-colons?

Sign in to comment.


Abdul Rafay
Abdul Rafay on 28 Oct 2023
function [mmr,mmm] = minimax(A)
mmr = max(A')-min(A');
a = A(:);
mmm = max(a)-min(a);
end
  1 Comment
Stephen23
Stephen23 on 28 Oct 2023
Edited: Stephen23 on 28 Oct 2023
Fails for any column vector:
[adr,dom] = minimax([1;2;3])
adr = 2
dom = 2
function [mmr,mmm] = minimax(A)
mmr = max(A')-min(A');
a = A(:);
mmm = max(a)-min(a);
end
Tip for the future: read the thread thoroughly before posting anything new:

Sign in to comment.

Categories

Find more on Creating and Concatenating 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!