MATLAB: Problem finding max value of column of an Matrix

matrixmaxmaximum

Dear Experts,
I have some loop problem in matlab, I can't find where is the exact problem in my loop , Could please help me in that 🙂
A = [ 0 1 2 3 4 25 6 7 8 9 ; 9 5 1 20 3 6 4 7 8 5]'
for i=1:size(A,1) for n=1:size(A,2) if A(i,n) == max(A(:,n)) A(i,n)=1 else A(i,n)=0 end end end
the Correct result I expect from the program like this :
0 0
0 0
0 0
0 1
0 0
1 0
0 0
0 0
0 0
0 0
But I getting the error result like
0 0
0 0
0 0
0 1
0 0
1 0
0 0
0 0
0 1
1 1
Many thanks
Good weekend
With Regards
Sayanta

Best Answer

A = [ 0 1 2 3 4 25 6 7 8 9 ; 9 5 1 20 3 6 4 7 8 5]'
c1 = A(:,1) == max(A(:,1));
c2 = A(:,2) == max(A(:,2));
A = [c1 c2];
You'll end up with a logical array as a result, but it will give the results you want. If it needs to be an array of type double, just cast it to double:
double(A)
If you would like to not create variables c1 and c2, then you can just replace c1 with A(:,1) and c2 with A(:,2) which will result in A as type double.
The problem with your initial code is that you're overwriting values in A in each loop.