## How to normalize values in a matrix to be between 0 and 1?

### Sahar abdalah (view profile)

on 8 Apr 2015
Latest activity Commented on by Jan Simon

on 12 Aug 2017

### Jos (10584) (view profile)

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

James Tursa

### James Tursa (view profile)

on 8 Apr 2015

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

### Sahar abdalah (view profile)

on 8 Apr 2015

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

### Jos (10584) (view profile)

on 8 Apr 2015
Edited by Jos (10584)

### Jos (10584) (view profile)

on 8 Apr 2015

This can be simply done in a two step process

1. subtract the minimum
2. 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

### Sahar abdalah (view profile)

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)

### Jos (10584) (view profile)

on 8 Apr 2015

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

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

### James Tursa (view profile)

on 8 Apr 2015

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

### Sahar abdalah (view profile)

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

### James Tursa (view profile)

on 9 Apr 2015

Use whichever is appropriate for your problem. Jos and I are both trying to interpret what you want, but without any background about the problem you are solving it is a bit of a guessing game at our end.

Sahar abdalah

on 9 Apr 2015

ok thanks

### Candan Celik (view profile)

on 12 Aug 2017

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

Jan Simon

on 12 Aug 2017