help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: detecting a sign change in a vector


From: Juan Pablo Carbajal
Subject: Re: detecting a sign change in a vector
Date: Sat, 2 Feb 2013 19:48:15 +0100

On Sat, Feb 2, 2013 at 7:46 PM, Juan Pablo Carbajal
<address@hidden> wrote:
> On Thu, Jan 31, 2013 at 7:41 PM, Jordi GutiƩrrez Hermoso
> <address@hidden> wrote:
>> On 31 January 2013 12:52, dirac <address@hidden> wrote:
>>> This might be trivial but I am stuck on this.
>>> I have a vector, V, which basically contains the values of a cos/sin
>>> function. The signs of the elements in the vector change from + to -
>>> occasionally.
>>
>> idx_changes = diff(sign(vector)) != 0)
>>
>> HTH,
>> - Jordi G. H.
>> _______________________________________________
>> Help-octave mailing list
>> address@hidden
>> https://mailman.cae.wisc.edu/listinfo/help-octave
>
> You can improve on Jordi's result by linear interpolation (or whatever
> fancier interpolation). Check this out
>
> t = linspace(0,2*pi,100);
> x = sin (4*t + pi/5);
> idx = find (diff (sign(x)) != 0);
> % If we take the values given by the indexes we get
> sin (4*t(idx) + pi/5)
>   0.2264968  -0.0697565   0.1642651  -0.0063466   0.1013720  -0.1954794
>  0.0380707  -0.1328855
> % if we do simple linear interpolation
> tzero = mean ([t(idx); t(idx+1)]);
> sin (4*tzero + pi/5)
>  0.1013720   0.0570888   0.0380707   0.1202944  -0.0253839  -0.0697565
> -0.0887363  -0.0063466
>
> In one case you get a worse result, but in general the abscissa of the
> zero is better estimated.
> Also, note that all these methods work for functions without noise. If
> you have noise you will better fit a model function to your data and
> get the zeros of the fitted function.

ADDENDUM:

or smooth your data using an adequate filter.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]