Vector normalisation


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Vector normalisation
# 1  
Old 04-04-2012
Vector normalisation

In AWK

For 3 individual vectors of the form:
Code:
-2.772  -9.341  -2.857
-5.140  -6.597  -1.823
-2.730  -5.615   1.159

I would like to write a script that parses line by line to (i) normalise, (ii) divide by the norm for *each* vector.

I.e.
Code:
sqrt(-2.772^2 + -9.341^2 + -2.857^2)=10.154

-2.772/10.154 = -0.273, -9.341/10.154 = -0.919, -2.857/10.154 = -0.281

# 2  
Old 04-04-2012
Code:
[/tmp] awk '{nm=sqrt(($1*$1)+($2*$2)+($3*$3)); print $1/nm FS $2/nm FS $3/nm}' file
-0.273 -0.919946 -0.281371
-0.600509 -0.770732 -0.212982
-0.429911 -0.884231 0.182515

This User Gave Thanks to CarloM For This Post:
# 3  
Old 04-04-2012
Why does the BEGIN/END commands in this script change the function of the script to loop over all records before doing the division by the norm?

Code:
awk 'BEGIN{s=0}{s = s + $1^2 + $2^2 + $3^2}END{print sqrt(s)}' file`

# 4  
Old 04-04-2012
Quote:
Originally Posted by chrisjorg
Why does the BEGIN/END commands in this script change the function of the script to loop over all records before doing the division by the norm?

Code:
awk 'BEGIN{s=0}{s = s + $1^2 + $2^2 + $3^2}END{print sqrt(s)}' file`

Statements in BEGIN block will be executed before reading any line of file and statements in END block will be executed after all the lines in file are read.

So, initially 's' is set to 0. And $1^2 + $2^2 + $3^2 of each line is added to 's' iteratively. After all the lines are read, sqrt(s) is printed.
# 5  
Old 04-04-2012
General case:
Code:
awk '{normp=0;for(i=1;i<=NF;i++)normp+=$i*$i; for(i=1;i<=NF;i++)printf "%8.3f",$i/sqrt(normp);print ""}' infile

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Programming

Number to bit vector

Is there a function to convert number (unsigned int for this example) to binary? I could not find a simple one thru google. While I was learning bloom filter with the example, I was wondering if anybody can help me to 1) display the real bits vector for the bloomfilter; 2) if dataset is very... (11 Replies)
Discussion started by: yifangt
11 Replies

2. Programming

vector c++

hello guys. i'm new to c++. i've problem using two dimensional vector. i've a project of making conway's game of life. this is the code that i have made so far. my problem is how can i give a two dimensional vector through main. glider.vec1 = vec; is not correct way to give a two... (2 Replies)
Discussion started by: nishrestha
2 Replies

3. Programming

Array and Vector

Hi all, from my understanding I understand that I can use array in this manner. struct test { int a; int b; int c; }; test testing; //creating an array with the structer type testing.a=1; testing.b=2; testing.c=3; If I'm not wrong we can use array in this manner,... (12 Replies)
Discussion started by: vinzping
12 Replies

4. Programming

sort a vector

Hi all, I have a vector,the type of the element within it is list<int>,and i wanna sort this vector.So i implemented a function as a predicate for sort(the STL algorithm).Problem came when i missed the bold part in my code,g++ generated lots of error messages.And after i added the bold... (4 Replies)
Discussion started by: homeboy
4 Replies

5. Programming

C++ Map using a Vector as a Value Type?

I modified some code I found on Wikipedia concerning maps to see if it would work before applying it to a project I'm working on that has a similar idea. What I would want is for a user to be able to enter sentences and then be able to distinguish how many times a the person entered a word in a... (4 Replies)
Discussion started by: kcgb20
4 Replies

6. Programming

c++ mutidimentional arrays using vector

Hi! I need to make dynamic multidimensional arrays using the vector class. I found in this page How to dynamically create a two dimensional array? - Microsoft: Visual C++ FAQ - Tek-Tips the way to do it in 2D, and now i'm trying to expand it to 3D but i don't understand how is the operator working,... (1 Reply)
Discussion started by: carl.alv
1 Replies

7. Programming

multidimensional array using c++ vector

Hi! I need to make dynamic multidimensional arrays using the vector class. I found in this page How to dynamically create a two dimensional array? - Microsoft: Visual C++ FAQ - Tek-Tips the way to do it in 2D, and now i'm trying to expand it to 3D but i don't understand how is the operator working,... (0 Replies)
Discussion started by: carl.alv
0 Replies

8. Programming

Vector Traversing

Hi i have the following structure struct S { char Mod_num; char val; char chr_nm_cd; } I am reading a 2GB file and inserting into the structure and writing into a vector. I feel like only vector will be a right option. I tried with multimap but it is memory intensive and hence i... (1 Reply)
Discussion started by: dhanamurthy
1 Replies

9. Programming

Linker error when using vector's

using SUN C++ I have a problem when I do a push_back on a vector. The linker gives me a undefined symbol error on __cxa_end_catch. Any ideas, is there a library to include? Thanks Chris (1 Reply)
Discussion started by: CDurkin
1 Replies

10. Programming

Saving a vector to a file

Another C++ question, please do notify me if this forum is C-only! :) I'm having a vector... vector<Person> x; ... with a class I've defined (Person). I have several elements in this vector and I would like to save it to a file (binary (?)). And later on open up this file to retrieve... (1 Reply)
Discussion started by: J.P
1 Replies
Login or Register to Ask a Question