matrix related matlab query
Mostrar comentarios más antiguos
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)
A =
66 94 75 18
4 68 40 71
85 76 66 4
>> [x, y] = minimax(A)
x =
76 67 81
y =
90
3 comentarios
Stephan
el 22 de Mzo. de 2019
This appears to be homework - to be exactly: your homework.
Please provide your attempts so far and ask a specific question to the problem you have by trying on your own.
Sahil Deshpande
el 30 de Mayo de 2020
Editada: Walter Roberson
el 8 de Jun. de 2020
What do you guys think of this?
function [mmr,mmm] = minimax(M)
T = M.'; %Transposed matrix M
S = max(T) - min(T); %S will return a row vector of max - min values of each column of T, which is transpose of S.
%So S returns max - min of each row of M, which is required
mmr = abs(S); %gives the absolute value
mmm = max(max(M)) - min(min(M)); %max(M) and min (M) return a row vector, I used the function twice.
end
Good gravy there's more of these.
See also:
Respuestas (9)
KETAN PATEL
el 11 de Jun. de 2019
function [mmr, mmm] = minimax(A);
B = A';
maxi= max(B);
mini = min(B);
mmr = max(B) - min(B);
mmm = max(maxi) - min(mini);
end
7 comentarios
KETAN PATEL
el 11 de Jun. de 2019
Editada: KETAN PATEL
el 11 de Jun. de 2019
The is issue with this problem is that the matrix given in the question is a 3X4 matrix. Hence, the max(of that matrix) will be a row vector of 4 elements. But the answer requires the matrix to be of only 3 element. So, I took the transpose of the Matrix given in the question and made into a 4X3 matix, thus receiving a 3 element row matrix an output for the max() and min() commands. You can certainly reduce the number of lines in the code I posted.
Guillaume
el 11 de Jun. de 2019
Rather than transposing matrices, which is expensive (plus you've used the conjugate transpose instead of plain transpose) simply tell min and max which dimension to operate on.
%no tranpose required
maxi = max(A, [], 2); %operate across 2nd dimension
This also has the advantage that the code doesn't break for a Nx1 matrix (yours will).
KETAN PATEL
el 14 de Jun. de 2019
Yeah, I was aware that my code will not run in all the scenarios. could you please explain how max(A, [], 2) works? I am new to MATLAB.
Thank you
Guillaume
el 14 de Jun. de 2019
Most matlab functions such as max, min, sum, mean, all, etc. will accept as their last argument the dimension across which to work. Thus max(A, [], 2) takes the max across the 2nd dimension (across the columns), sum(A, 2) the sum across the columns, etc.
KETAN PATEL
el 14 de Jun. de 2019
Thank you!
KETAN PATEL
el 14 de Jun. de 2019
I have another problem and I just posted it in the community. It is titled as "if-statement with conditions". Could you please take a look if you have time? It's really easy but I don't where I am going wrong.
Ammara Haider
el 17 de Dic. de 2019
thanks for your kind help
Saurabh Bhardwaj
el 8 de Jun. de 2020
function [a,b]=minimax(M)
A= min(M,[],2);
B= max(M,[],2);
a=(B-A)';
b=max(B)-min(A);
end
1 comentario
DGM
el 27 de Feb. de 2023
.' is the regular transpose
' is the complex conjugate transpose
It could use some commentary too. Otherwise, this is more thoughtful than most of the solutions on these threads.
RP
el 4 de Abr. de 2019
I saw this exercise on Coursera and seemed to have solved it, anyway when I ran the code it worked, but when I submit the answer and it is evaluated with random input, I get an error message every time. When I try to run it with the random numbers that were used for the evaluation, I get the correct results. Does anyone have the same problem? This is my code:
function [mmr, mmm] = minimax(M)
mmr = (max(M,[],2)-min(M,[],2))'
mmm = max(M(:))
end
5 comentarios
Guillaume
el 4 de Abr. de 2019
What is the error message you get?
Kailash Ramasubramaniam
el 8 de Mayo de 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?
Ronald Grant
el 5 de Ag. de 2020
Editada: Ronald Grant
el 5 de Ag. de 2020
function [mmr, mmm] = minimax(M)
mmq = max(M,[],2)-min(M,[],2);
mmr = transpose(mmq);
mmm = max(M(:))-min (M(:));
end
try to modify few things in your code, and here you go. nice code btw really help me alot :D
Crystal Judd Unson
el 25 de Abr. de 2021
Editada: Crystal Judd Unson
el 25 de Abr. de 2021
Hi, I'm new to MATLAB so I'm a little confused on max(A,[],dim). How does this code instruct mmr to be a row vector and not a column vector? Why do I get an error message when
function [mmr, mmm] = test(M)
mmr = (max(M,[],0)-min(M,[],0))';
mmm = max(M(:))-min(M(:));
end
Thanks!
x = magic(4);
max(x, [], 0)
Arrays in MATLAB do not have a dimension 0 so it does not make sense to ask for the maximum along that dimension.
RP
el 4 de Abr. de 2019
0 votos

4 comentarios
Durga Charan
el 13 de Abr. de 2019
you needs to transpose the final results. your function calls in colum. but it is asked as a row vector.
Gregorio Giorgi
el 6 de Jul. de 2019
Thank you Durga, I was getting the same as Rose, but then I transposed the final results to a row vector like you suggested.
This is how I solved it in the end (there are probably other ways to do it):
function [mmr, mmm] = minimax (M)
mmr_1 = max(M, [], 2) - min(M, [], 2);
mmr = mmr_1'
mmm = max(M, [], 'all') - min(M, [], 'all');
end
sneha sharma
el 10 de Sept. de 2019
function [mmr,mmm]=minimax(A)
a=max(A(1,:))-min(A(1,:));
b=max(A(1,:))-min(A(1,:));
c=max(A(3,:))-min(A(3,:));
d=max(A(end,:))-min(A(end,:));
mmr=[a b c];
mmm=max(A(:))-min(A(:));
end
%this is my program it is not working for random matrices , can you define an error
VIJAY VIKAS MANGENA
el 13 de Ag. de 2020
What if the random matrix has more than 3 rows?
1)You have fixed the no.of outputs using this code.You get only 4 values ( if you meant ,b=max(A(2,:))-min(A(2,:));)
2)You have assumed that mmr can have only three outputs which is not always true..it depends on the matrix chosen and your code is supposed to work for any random matrix (the reason you got this error 'not working for random matrices'
AYUSH GURTU
el 28 de Mayo de 2019
function [mmr, mmm] = minimax(M)
mmr = (max(M,[],2)-min(M,[],2))';
mmm = max(M(:))-min(M(:));
end
3 comentarios
Muhammad Najeeb khan
el 19 de Jun. de 2019
can you please explain the mmr code.
RUSHI SHAH
el 2 de Mzo. de 2020
Can you please explain the syntax for mmr?
Ashitha Nair
el 15 de Jun. de 2020
Ashitha Nair
el 15 de Jun. de 2020
function [mmr,mmm]=minimax(M)
a=ceil(max(M.'));
b=ceil(min(M.'));
x=a-b;
mmr=x';
y=max(M(:));
z=min(M(:));
mmm=y-z;
end
This is how I've written it.
2 comentarios
Dorbala sankarshana
el 23 de Jun. de 2020
can you please explain this?
DGM
el 27 de Feb. de 2023
Why would you take ceil()? That will give you the wrong result for non-integer inputs.
anuj petkar
el 13 de Sept. de 2020
function [mmr,mmm]=minimax(M)
A=(M(:,:))';
mmr=max(A(:,:))-min(A(:,:));
mmm=max(max(A))-min(min(A));
end
1 comentario
DGM
el 27 de Feb. de 2023
A(:,:)
is the same as
A
ANDIE MEDDAUGH
el 7 de Jul. de 2021
Editada: DGM
el 27 de Feb. de 2023
Here's the code I used:
function [mmr, mmm] = minimax(M)
B = M';
maxie = max(B);
minnie = min(B);
mmr = abs(maxie - minnie)
mmm = abs(max(maxie) - min(minnie));
end
The max and min functions read columns, not rows. So the M' switches columns to rows, so that issue is resolved. Abs() is used to ensure absolute value and no negative numbers.
Categorías
Más información sobre Logical en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!