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

20 views (last 30 days)
Aniket Bordekar on 1 Aug 2020 at 20:21
Answered: Walter Roberson on 2 Aug 2020 at 16:47
%{
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');

Show 1 older comment
Walter Roberson on 1 Aug 2020 at 21:11
help ctranspose
would be more correct for determining what the function does.
• If A is complex, then max(A) returns the complex number with the largest magnitude. If magnitudes are equal, then max(A) returns the value with the largest magnitude and the largest phase angle.
Aniket Bordekar on 2 Aug 2020 at 16:00
Yes I didn't wrote the code but I want to know why was that transpose taken.
@JohnD'Errico
Aniket Bordekar on 2 Aug 2020 at 16:00
Thanks @WalterRoberson

Walter Roberson on 2 Aug 2020 at 16:47
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.