This question is closed. Reopen it to edit or answer.

120 views (last 30 days)

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. See the code below for an example:

>> A = randi(100,3,4) %EXAMPLE

A =

66 94 75 18

4 68 40 71

85 76 66 4

>> [x, y] = minimax(A)

x =

76 67 81

y =

90

%end example

%calling code: [mmr, mmm] = minimax([1:4;5:8;9:12])

Is my logic correct?

my approach

function [a,b]= minimax(M)

m=M([1:end,0);

a= [abs(max(M(m))-min(M(m)))];

b= max(M(:)) - min(M(:));

end

mayank ghugretkar
on 5 Jun 2019

here's my function....

went a little descriptive for good understanding to readers.

function [a,b]=minimax(M)

row_max=max(M');

overall_max=max(row_max);

row_min=min(M');

overall_min=min(row_min);

a=row_max - row_min;

b=overall_max-overall_min;

Code to call your function

[mmr, mmm] = minimax([1:4;5:8;9:12])

Rik
on 12 Jun 2019

Purushottam Shrestha
on 8 Jun 2020

Stephen Cobeldick
on 17 Jul 2020

"We need to transpose because max(M.') gives a row vector of maximum elements of each row."

In some specific cases it will, but in general it does not.

"I want you to try by giving command >>max(A.') Then you can see clearly."

Okay, lets take a look:

>> A = [1;2;3]

A =

1

2

3

>> max(A.')

ans = 3

I can clearly see that this does NOT give the maximum of each row of A.

kannan vidyadhar
on 29 Apr 2020

Edited: kannan vidyadhar
on 29 Apr 2020

this is how i did

function [mmr,mmm]=minimax(A)

mmt=[max(A,[],2)-min(A,[],2)];

mmr=mmt'

mmm=max(A,[],"all")-min(A,[],"all")

Rik
on 29 Apr 2020

If you don't want people to copy your answer you shouldn't have posted it on a public forum.

RAHUL KUMAR
on 8 May 2020

function [mmr mmm] = minimax(M);

mmr = (max(M,[],2) - min(M,[],2))';

mmm = max(M(:))-min(M(:));

end

Kailash Ramasubramaniam
on 9 May 2020

function [mmr,mmm]=minimax(r)

mmr= [max(r(1,[1:end]))- min(r(1,[1:end])),max(r(2,[1:end]))- min(r(2,[1:end])),...

max(r(3,[1:end]))- min(r(3,[1:end]))];

mmm=max(r(:))-min(r(:));

end

This the code which I wrote for this question. This works fine for matrices till 3 rows,after which it fails. I am new to matlab. Can someone help me to correct this code for random matrices please?

Arooba Ijaz
on 1 May 2020

function [mmr,mmm] =minimax (M)

%finding mmr

a=M'

b=max(a)

c=min(a)

mmr=b-c

%finding mmm

d=max(M)

e=max(d)

f=min(M)

g=min(f)

mmm=e-g

Walter Roberson
on 9 Jun 2020

Rik
on 9 Jun 2020

Nisheeth Ranjan
on 28 May 2020

function [mmr,mmm]=minimax(A)

mmt=[max(A,[],2)-min(A,[],2)];

mmr=mmt'

mmm=max(max(A))-min(min(A))

This is the easiest code you cold ever find. Thank me later.

Geoff Hayes
on 27 May 2019

Edited: Geoff Hayes
on 27 May 2019

Is my logic correct?

I'm not clear on why you need the m. In fact, doesn't the line of code

m=M([1:end,0);

fail since there is no closing square bracket? What is the intent of this line?

Geoff Hayes
on 28 May 2019

how can I assign each row to this function one after the other?

I don't understand your question. Why do you need to assign each row to this function? If you do

>> min(A, [], 2)

then that will return a vector/array with the minimum value in each row of A...

RAHUL KUMAR
on 8 May 2020

function [mmr mmm] = minimax(M);

mmr = (max(M,[],2) - min(M,[],2))';

mmm = max(M(:))-min(M(:));

end

Sahil Deshpande
on 30 May 2020

function [mmr,mmm] = minimax(M)

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

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

I did it this way

pradeep kumar
on 26 Feb 2020

function [mmr,mmm]=minimax(M)

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

mmm=(max(max(M'))-min(min(M')))

end

Rik
on 26 Feb 2020

Why would you use the transpose if you can also simply use the third input argument for min?

Also, max(max(M')) is equivalent to max(max(M)) and max(M(:)) (and also to max(M,[],'all'), so you could even use that).

Rohan Singla
on 17 Apr 2020

function [mmr,mmm] = minimax(M)

a=M';

mmr=max(a,[],1)-min(a,[],1);

mmm= max(M(:)) - min(M(:));

end

Walter Roberson
on 12 May 2020

Walter Roberson
on 12 May 2020

AYUSH MISHRA
on 26 May 2020

function [mmr,mmm]=minimax(M)

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

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

end

% here M' is use because when we are using M than mmr generate column matrix

SOLUTION

[mmr, mmm] = minimax([1:4;5:8;9:12])

mmr =

3 3 3

mmm =

11

saurav Tiwari
on 11 Jun 2020

whatttt, it's so easy code omg and i make it very difficult. Same on me

Anurag Verma
on 26 May 2020

function [mmr,mmm]=minimax(M)

a = max(M(1,:))-min(M(1,:));

b = max(M(2,:))- min(M(2,:));

c = max(M(3,:))- min(M(3,:));

mmr = [a,b,c];

mmm = max(M(:))-min(M(:));

what's wrong with this code. can anyone explain please it gives an error with the random matrix question?

Rik
on 26 May 2020

Your code will only consider the first 3 rows. It will error for arrays that don't have 3 rows, and will return an incorrect result for arrays that have more than 3 rows.

You should read the documentation for max and min, and look through the other solutions on this thread for other possible strategies to solve this assignment.

saurav Tiwari
on 11 Jun 2020

Md Naim
on 30 May 2020

function [mmr, mmm]= minimax(M)

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

mmm = max(max(M'))-min(min(M'))

end

ROHAN SUTRADHAR
on 6 Jun 2020

function [mmr,mmm] = minimax(A)

X = A';

mmr = max(X([1:end],[1:end]))- min(X([1:end],[1:end]));

mmm = max(X(:))-min(X(:));

end

saurav Tiwari
on 11 Jun 2020

function [a,b]=minimax(M)

[m,n]=size(M);

x=1:m;

a=max(M(x,:)')-min(M(x,:)');

v=M(:);

b=max(v)-min(v);

end

A.H.M.Shahidul Islam
on 21 Jul 2020

Edited: A.H.M.Shahidul Islam
on 21 Jul 2020

function [mmr,mmm]=minimax(M)

m=M';

mmr=abs(max(m)-min(m));

mmm=max(M(:))-min(M(:));

%works like a charm

Stephen Cobeldick
on 21 Jul 2020

"works like a charm"

Does not work:

>> M = [1;2;4]

M =

1

2

4

>> minimax(M)

ans =

3

Akinola Tomiwa
on 23 Jul 2020

Function [mmr, mmm] = minmax(x)

mmr = (max(x, [], 2) - min(x, [], 2)';

%the prime converts it to a row matrix

mmm = (max(x(:)) - min(x(:));

end

Akinola Tomiwa
on 23 Jul 2020

Oh, alright, thanks I'll do well to write codes in smaller piece. Thanks a lot

Function [mmr, mmm] = minimax(x)

min_value = min(x,[], 2); % this takes the row minimum values of the supplied matrix

max_value = max(x, [],2); % this takes the row maximum values

mmr = (max_value-min_value)'; % the prime converts the colon to a row

mmm = (max(x(:)) - min(x(:)) ;

%x(:) converts the matrix to a single colon matrix so max(x(:)) returns a single value the maximum value

end

How is this ?

Walter Roberson
on 23 Jul 2020

mmm = (max(x(:)) - min(x(:)) ;

1 2 3 21 2 3 21

The number indicates the bracket nesting level in effect "after" the corresponding character. You can see that you have one open bracket in effect at the end of the line.

youssef boudhaouia
on 24 Jul 2020

function [mmr,mmm]=minimax(M)

a=M';

ma=max(a);

mi=min(a);

mmr = ma - mi ;

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

end

Here's my answer, as simple as possible and it works.

youssef boudhaouia
on 24 Jul 2020

function [mmr,mmm]=minimax(M)

a=M';

ma=max(a);

mi=min(a);

mmr = ma - mi ;

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

end

here's my answer as simple as possible , it works!

Opportunities for recent engineering grads.

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

Start Hunting!
## 15 Comments

## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/464240-write-a-function-called-minimax-that-takes-m-a-matrix-input-argument-and-returns-mmr-a-row-vector#comment_709094

⋮## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/464240-write-a-function-called-minimax-that-takes-m-a-matrix-input-argument-and-returns-mmr-a-row-vector#comment_709094

## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/464240-write-a-function-called-minimax-that-takes-m-a-matrix-input-argument-and-returns-mmr-a-row-vector#comment_709281

⋮## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/464240-write-a-function-called-minimax-that-takes-m-a-matrix-input-argument-and-returns-mmr-a-row-vector#comment_709281

## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/464240-write-a-function-called-minimax-that-takes-m-a-matrix-input-argument-and-returns-mmr-a-row-vector#comment_709382

⋮## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/464240-write-a-function-called-minimax-that-takes-m-a-matrix-input-argument-and-returns-mmr-a-row-vector#comment_709382

## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/464240-write-a-function-called-minimax-that-takes-m-a-matrix-input-argument-and-returns-mmr-a-row-vector#comment_768610

⋮## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/464240-write-a-function-called-minimax-that-takes-m-a-matrix-input-argument-and-returns-mmr-a-row-vector#comment_768610

## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/464240-write-a-function-called-minimax-that-takes-m-a-matrix-input-argument-and-returns-mmr-a-row-vector#comment_801841

⋮## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/464240-write-a-function-called-minimax-that-takes-m-a-matrix-input-argument-and-returns-mmr-a-row-vector#comment_801841

## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/464240-write-a-function-called-minimax-that-takes-m-a-matrix-input-argument-and-returns-mmr-a-row-vector#comment_828539

⋮## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/464240-write-a-function-called-minimax-that-takes-m-a-matrix-input-argument-and-returns-mmr-a-row-vector#comment_828539

## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/464240-write-a-function-called-minimax-that-takes-m-a-matrix-input-argument-and-returns-mmr-a-row-vector#comment_845820

⋮## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/464240-write-a-function-called-minimax-that-takes-m-a-matrix-input-argument-and-returns-mmr-a-row-vector#comment_845820

## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/464240-write-a-function-called-minimax-that-takes-m-a-matrix-input-argument-and-returns-mmr-a-row-vector#comment_859563

⋮## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/464240-write-a-function-called-minimax-that-takes-m-a-matrix-input-argument-and-returns-mmr-a-row-vector#comment_859563

## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/464240-write-a-function-called-minimax-that-takes-m-a-matrix-input-argument-and-returns-mmr-a-row-vector#comment_873575

⋮## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/464240-write-a-function-called-minimax-that-takes-m-a-matrix-input-argument-and-returns-mmr-a-row-vector#comment_873575

## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/464240-write-a-function-called-minimax-that-takes-m-a-matrix-input-argument-and-returns-mmr-a-row-vector#comment_873591

⋮## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/464240-write-a-function-called-minimax-that-takes-m-a-matrix-input-argument-and-returns-mmr-a-row-vector#comment_873591

## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/464240-write-a-function-called-minimax-that-takes-m-a-matrix-input-argument-and-returns-mmr-a-row-vector#comment_874291

⋮## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/464240-write-a-function-called-minimax-that-takes-m-a-matrix-input-argument-and-returns-mmr-a-row-vector#comment_874291

## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/464240-write-a-function-called-minimax-that-takes-m-a-matrix-input-argument-and-returns-mmr-a-row-vector#comment_887345

⋮## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/464240-write-a-function-called-minimax-that-takes-m-a-matrix-input-argument-and-returns-mmr-a-row-vector#comment_887345

## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/464240-write-a-function-called-minimax-that-takes-m-a-matrix-input-argument-and-returns-mmr-a-row-vector#comment_892979

⋮## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/464240-write-a-function-called-minimax-that-takes-m-a-matrix-input-argument-and-returns-mmr-a-row-vector#comment_892979

## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/464240-write-a-function-called-minimax-that-takes-m-a-matrix-input-argument-and-returns-mmr-a-row-vector#comment_941679

⋮## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/464240-write-a-function-called-minimax-that-takes-m-a-matrix-input-argument-and-returns-mmr-a-row-vector#comment_941679

## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/464240-write-a-function-called-minimax-that-takes-m-a-matrix-input-argument-and-returns-mmr-a-row-vector#comment_941748

⋮## Direct link to this comment

https://www.mathworks.com/matlabcentral/answers/464240-write-a-function-called-minimax-that-takes-m-a-matrix-input-argument-and-returns-mmr-a-row-vector#comment_941748