MATLAB Answers

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

Asked by Clarisha Nijman

### Clarisha Nijman (view profile)

on 4 Oct 2018
Latest activity Commented on by Clarisha Nijman

### Clarisha Nijman (view profile)

on 4 Oct 2018
Accepted Answer by dpb

### dpb (view profile)

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

### dpb (view profile)

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...

Clarisha Nijman

### Clarisha Nijman (view profile)

on 4 Oct 2018
Thanks a lot, it worked!

Sign in to comment.

### Jim Riggs (view profile)

Answer by Jim Riggs

### Jim Riggs (view profile)

on 4 Oct 2018
Edited by Jim Riggs

### Jim Riggs (view profile)

on 4 Oct 2018

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

Clarisha Nijman

### Clarisha Nijman (view profile)

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

Sign in to comment.