[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