Date: Jan 29, 2013 7:45 PM
Author: Derek Goring
Subject: Re: Zero Crossing
On Wednesday, January 30, 2013 9:05:09 AM UTC+13, Pete wrote:

> TideMan <mulgor@gmail.com> wrote in message <b59569bf-fa63-42d8-86d5-033c57434476@googlegroups.com>...

>

> > On Tuesday, January 29, 2013 5:08:08 AM UTC+13, Pete wrote:

>

> > > Hi,

>

> > >

>

> > > I'm very new to matlab and need to calculate individual wave crest heights from ocean wave height data. So far i have selected the column of data that i want to look at and cut the data size down slightly. I think the next step is to use the sign function to get 1's, -1's and 0's from the data. Here's what I have so far:

>

> > >

>

> > >

>

> > >

>

> > > s=load('sample.txt');

>

> > >

>

> > > e1=s(:,9);

>

> > >

>

> > > eta1=e1(6000:end);

>

> > >

>

> > > sgn=sign(e1);

>

> > >

>

> > > ff=find(sgn==0);

>

> > >

>

> > >

>

> > >

>

> > > Does anyone know what i have to do next? Any help would be great!

>

> >

>

> > No, you need to find the points where the signs change:

>

> > t1=e1(1:end-1);

>

> > t2=e1(2:end);

>

> > tt=t1.*t2;

>

> > indx=find(tt<0);

>

> > Now, indx contains the locations of the zero crossings (upward and downward) as shown here:

>

> > t=[0:length(e1)-1]';

>

> > plot(t,e1,'b-',t(indx),e1(indx),'rx')

>

>

>

> Thats brilliant thanks! How is it now that i could select one of the zero crossing points (and in turn one wave) and calculate the crest height of the wave?

Throw away every second point:

indx=indx(1:2:end);

Set up a set of start and finish points;

k=[indx(1:end-1) indx(2:end)];

Now, wave number iwave has crest:

emx(iwave)=max(e1(k(iwave,1):k(iwave,2));

and wave height:

H(iwave)=max(e1(k(iwave,1):k(iwave,2)) - ...

min(e1(k(iwave,1):k(iwave,2));