help-octave
[Top][All Lists]
Advanced

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

Re: Zero Crossing Rate - optimize implementation


From: James Sherman Jr.
Subject: Re: Zero Crossing Rate - optimize implementation
Date: Fri, 7 May 2010 21:18:15 -0400

Well, I think the biggest thing is that you can use that sign operates per element when you give it a vector, so to find where the zero crossings are you can simply do:

zcr = diff(sign(s))~=0;

Then you can loop over this to do your summations of frames.  Something like:
index = 1;
frame_start = 1:framesize:N;
zcr_rate = zeros(1, length(frame_start));
for starttime = frame_start,
   endtime = min(starttime+framesize-1, N);
   zcr_rate(index) = sum(zcr(starttime:endtime));
   index = index + 1;
end

On Fri, May 7, 2010 at 8:09 PM, jacek grabowski <address@hidden> wrote:
Hello,

I would like to ask You for any idea how to optimize following code:

s=wavread('sample.wav');
N=length(s)
framesize=2000;
frame_lim=[1:framesize:N-1];
FN=length(frame_lim);
zcr=zeros(1,FN-1);
tic()
for i=1:FN-1
   for k=frame_lim(1,i):frame_lim(1,i+1)
       if sign(s(k)) != sign (s(k+1))
        zcr(i)=zcr(i)+1;
       endif
   endfor
endfor
toc()

N =  236352
Elapsed time is 41.39265 seconds.

This is my first week with Octave, so forgive me any stupid question ... :)
Thank you very much.

--
Jacek Grabowski
_______________________________________________
Help-octave mailing list
address@hidden
https://www-old.cae.wisc.edu/mailman/listinfo/help-octave


reply via email to

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