# what exactly norm(x) function do?

23 views (last 30 days)

Show older comments

Good Afternoon,

I have to convert a part of my matlab code into C++.

I would be great if you can explain me what exactly norm(x) do on a vector of complex number so that I can write a C++ code for it.

I just asked a similar question on stack overflow but could not get much response.

Thank you in advance.

##### 5 Comments

### Accepted Answer

James Tursa
on 21 Sep 2022

Edited: James Tursa
on 21 Sep 2022

The equivalent function to norm( ) for a complex column vector x is

sqrt(x' * x)

where x' is the complex conjugate transpose. Essentially sqrt(dot(x,x)). Note that dot( ) does the complex conjugate part of the calculation automatically.

E.g.,

x = [1;2;3;4] + [5;6;7;8]*1i

norm(x)

sqrt(x'*x)

sqrt(dot(x,x))

So in C/C++ just run a loop to sum up the individual element-by-element multiplies for the dot product result. For an element of the form a+b*i you will be summing a^2+b^2 and then taking the sqrt( ) of the final sum.

##### 4 Comments

James Tursa
on 22 Sep 2022

Edited: James Tursa
on 22 Sep 2022

### More Answers (1)

Matt J
on 22 Sep 2022

Edited: Matt J
on 22 Sep 2022

Assuming you only care about p=2, If you already have code that computes norm(x) for real x, you can extend it to complex x via,

norm(x) = norm( [norm(real(x)), norm(imag(x)) ] )

which is easily verified below,

x=complex(rand(5,1), rand(5,1));

norm(x)

norm( [norm(real(x)), norm(imag(x)) ] )

Alternatively, if you have an implementation of abs, you could do norm(abs(x),p) which will work for any p-norm:

p=3;

norm(x,p)

norm(abs(x),p)

##### 0 Comments

### See Also

### Categories

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!