MATLAB: Plot the power spectrum using the autocorrelation of bond angles

autocorrelationpower spectrum

Dear matlab users,
I have obtained the average bond angles for given set of water molecules at each time frame during simulation.
My target is to find the autocorrelation of these bond angles and finally to obtain the power spectrum of water.
Thus, the spectrum can be compared with that of standard spectrum of water.
How can I achieve this?
Any suggestion will be highly appreciated.
My sample file is as follows
time(fs) bond angle of water(deg)
0 104.98
50 104.77
100 105.13
200 104.56
250 103.99
so on.. I have 30000 such values which last for 1.5 ns ( 50 fs*30000 frames)
  • Thanks in advance

Best Answer

Bond Length: The distance between the centers of two nuclei of atoms connected by a chemical bond is known as ‘bond length’.
Bond Angle: The angle between the directions of two bonds in a molecule is called the ‘bond angle’.
Bond angle depend upon factors,
(i) charge distribution, (ii) geometry of the molecules, (iii) symmetry, (iv) hybridization etc.
To calculate the power spectrum of water you need multiple variables, using only the bond acacuracy of power spectrum would be reduced.
Include electronegativity, atomic number etc to increase accuracy.
The bond energy of the covalent O−H bonds in water is said to be 110.3 kcal/mol (461.5 kJ/mol), the bond angle is 105 deg.
since deviation causes loss of energy, you could use a basic relational formula for dissociation to calculate power spectrum like :
bond_strength = 110.3-((bond_angle_of_water - 105)^2)*bond_angle_of_water/105;