Asked by Sahar abdalah
on 8 Apr 2015

I have a matrix Ypred that contain negative values and I want to normalize this matrix between 0 and 1

Ypred=[-0.9630 -1.0107 -1.0774 -1.2075 -1.4164 -1.2135 -1.0237 -1.0082 -1.0714 -1.0191 -1.3686 -1.2105];

I'm new in matlab, please help me, there is a matlab function or toolbox that can do this? thanks

Answer by Jos (10584)
on 8 Apr 2015

Edited by Jos (10584)
on 8 Apr 2015

Accepted Answer

This can be simply done in a two step process

- subtract the minimum
- divide by the new maximum

normA = A - min(A(:)) normA = normA ./ max(normA(:)) % *

note that A(:) makes A into a long list of values. Otherwise min(A) would not return a single value ... Try fro yourself!

- Edited after comment ...

Sahar abdalah
on 8 Apr 2015

Thanks for the code, I just tried this and it not normalised between 0 and 1

Ypred =

-0.9630 -1.0107 -1.0774 -1.2075 -1.4164 -1.2135 -1.0237 -1.0082 -1.0714 -1.0191 -1.3686 -1.2105

normA =

0.4534 0.4057 0.3390 0.2089 0 0.2029 0.3927 0.4082 0.3450 0.3973 0.0478 0.2059

normA =

1.0000 1.0495 1.1188 1.2539 1.4708 1.2601 1.0630 1.0469 1.1126 1.0583 1.4212 1.2570

Jos (10584)
on 8 Apr 2015

Sorry! The second line of code is wrong ;-) It should read

normA = normA ./ max(normA(:))

Sign in to comment.

Answer by James Tursa
on 8 Apr 2015

NormRows = sqrt(sum(Ypred.*Ypred,2)); Ynorm = bsxfun(@rdivide,abs(Ypred),NormRows);

Tubi
on 10 Mar 2018

If I want to use this code for my work, any way should I use to cite/reference?

John D'Errico
on 10 Mar 2018

Tubi
on 22 Mar 2018

Sign in to comment.

Answer by Sahar abdalah
on 9 Apr 2015

thank you for your answers. I used both codes and I found two different result. what is the result that I can use?

normA = Ypred - min(Ypred(:)) normA = normA ./ max(normA(:))

normA =

1.0000 0.8948 0.7477 0.4607 0 0.4475 0.8661 0.9003 0.7609 0.8763 0.1054 0.4541

NormRows = sqrt(sum(Ypred.*Ypred,2)); Ynorm = bsxfun(@rdivide,abs(Ypred),NormRows); Ynorm =

0.5461 0.5731 0.6110 0.5435 0.6375 0.5462 0.5712 0.5625 0.5978 0.4871 0.6542 0.5786

James Tursa
on 9 Apr 2015

Sahar abdalah
on 9 Apr 2015

ok thanks

Sign in to comment.

Answer by Candan Celik
on 12 Aug 2017

Hello, What is the name of this norm in the accepted answer? (Euclidean, Frobenius etc.)

Jan
on 12 Aug 2017

Please post comments to answers in the section for the comments. You message is not an answer.

The accepted answer does not contain a norm at all, but a "normalization". A matrix norm would reply a scalar, the normalization replies a matrix with the same size, but with shifted and scaled values.

Sign in to comment.

Opportunities for recent engineering grads.

Apply Today
## 2 Comments

## James Tursa (view profile)

Direct link to this comment:https://www.mathworks.com/matlabcentral/answers/196798-how-to-normalize-values-in-a-matrix-to-be-between-0-and-1#comment_277430

What do you mean by "normalize"? Divide by the max value in the matrix and make all values positive? Do this by columns or rows? Divide by norm of columns or rows? Or what?

## Sahar abdalah (view profile)

Direct link to this comment:https://www.mathworks.com/matlabcentral/answers/196798-how-to-normalize-values-in-a-matrix-to-be-between-0-and-1#comment_277431

I want to divide by norm of row to make positive values

Sign in to comment.