MATLAB Answers

0

How to normalize a matrix such that each column sums equal 1

Asked by Clarisha Nijman on 4 Oct 2018
Latest activity Commented on by Clarisha Nijman on 4 Oct 2018
Accepted Answer by dpb
Hello,
I have a matrix A=[1 2 3; 1 3 6] and want to normalize the matrix such that each column sum equals 1.
The normalized matrix should be: P=[0.5 0.4 0.33; 0.5 0.6 0.67]
I tried these codes:
P=normc(A);
P=(A)/sum(A,1);
P=A/norm(A,1);
but they do not result in a matrix with column sums 1.
Can somebody give me some feedback?
Thank you in advance,
Clarisha

  0 Comments

Sign in to comment.

2 Answers

Answer by dpb
on 4 Oct 2018
 Accepted Answer

You're missing the "dot" operator so the division is matrix divide not element-wise. See
doc ./
doc rdivide % that's a stretch to know the function name, for sure... :)
A=A./sum(A);
Look up how Matlab operates on arrays in documentation for sum to see why this works for what you want with only one argument...

  1 Comment

Sign in to comment.


Answer by Jim Riggs
on 4 Oct 2018
Edited by Jim Riggs
on 4 Oct 2018

[row, col] = size(A);
for i=1:col
P(:,i)= A(:,i)/sum(A(:,i))
end

  1 Comment

Thanks a lot, this also works! Only a semicolon at the end of the third line.

Sign in to comment.