Formula for norm(x)
    10 views (last 30 days)
  
       Show older comments
    
Hi everyone, please describe me the formula for norm (x) where x is a complex vector?
Accepted Answer
  James Tursa
      
      
 on 22 Sep 2022
        
      Edited: James Tursa
      
      
 on 22 Sep 2022
  
      This question appears to be a follow-up to this post:
You gave your attempt in that post, but it didn't do the sum properly. Here is a corrected version of your code with some edits. I would recommend to use double for the sum and normalized value:
double norm = 0.0;
for(int i=0;i < data_size; i++){
    // real_number and img_number are the vectors
    norm = norm + real_number[i]*real_number[i] + img_number[i]*img_number[i];  
}
norm = sqrt(norm);
If there is the possibility that the int*int result could overflow (I don't know the range of your numbers), then cast those numbers to doubles first. E.g.,
    norm = norm + (double)real_number[i]*(double)real_number[i] + (double)img_number[i]*(double)img_number[i];  
More Answers (1)
  Matt J
      
      
 on 22 Sep 2022
        
      Edited: Matt J
      
      
 on 22 Sep 2022
  
      Assuming you're only interested in 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
				Find more on Loops and Conditional Statements in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

