# vecnorm - applying norm function to rows of matrix-Matlab

## vecnorm matlab 2017 (5)

From version 2017b onwards, you can use vecnorm.

This question already has an answer here:

I have a 3 columns, n rows matrix:

```
[ a,b,c;
d,e,f;
g,h,i; ]
```

I want to apply the norm function to each of the rows, and get a `1xn`

matrix containing the norms:

```
[ norm([a,b,c]);
norm([d,e,f]);
norm([g,h,i]); ]
```

I could do this with a for-loop, but is there a better way?

If readability is a bigger consideration than performance you might also consider:

`norms = cellfun(@norm,num2cell(A,2));`

This pattern is also adaptable to other operations along one dimension you might want to perform where MATLAB doesn't support it natively.

What about

` norms = sqrt(sum(A.^2,1))`

or

` norms = sqrt(sum(A.^2,2))?`

depending on whether your coordinates are in rows or in columns.

if the first dimension is not too large:

`norms = sqrt(diag(A * A'));`

## Vector norm of an array of vectors in MATLAB

You can compute the norm of each column or row of a matrix yourself by using element-wise arithmetic operators and functions defined to operate over given matrix dimensions (like SUM and MAX). Here's how you could compute some column-wise norms for a matrix `M`

:

```
twoNorm = sqrt(sum(abs(M).^2,1)); %# The two-norm of each column
pNorm = sum(abs(M).^p,1).^(1/p); %# The p-norm of each column (define p first)
infNorm = max(M,[],1); %# The infinity norm (max value) of each column
```

These norms can easily be made to operate on the rows instead of the columns by changing the dimension arguments from `...,1`

to `...,2`

.