Mercurial > forge
view main/audio/au.m @ 0:6b33357c7561 octave-forge
Initial revision
author | pkienzle |
---|---|
date | Wed, 10 Oct 2001 19:54:49 +0000 |
parents | |
children |
line wrap: on
line source
## Copyright (C) 2000 Paul Kienzle ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; if not, write to the Free Software ## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ## y = au(x, fs, lo [, hi]) ## ## Extract data from x for time range lo to hi in milliseconds. If lo ## is [], start at the beginning. If hi is [], go to the end. If hi is ## not specified, return the single element at lo. If lo<0, prepad the ## signal to time lo. If hi is beyond the end, postpad the signal to ## time hi. ## TODO: modify prepad and postpad so that they accept matrices. function y=au(x,fs,lo,hi) if nargin<3 || nargin>4, usage("y = au(x, fs, lo [,hi])"); endif if nargin<4, hi=lo; endif if isempty(lo), lo=1; else lo=fix(lo*fs/1000)+1; endif if isempty(hi), hi=length(x); else hi=fix(hi*fs/1000)+1; endif if hi<lo, t=hi; hi=lo; lo=hi; endif if (size(x,1)==1 || size(x,2)==1) y=x(max(lo,1):min(hi,length(x))); if (lo<1), y=prepad(y,length(y)-lo+1); endif if (hi>length(x)), y=postpad(y,length(y)+hi-length(x)); endif else y=x(max(lo,1):min(hi,length(x)), :); if (lo<1), y=[zeros(size(x,2),-lo+1) ; y]; endif if (hi>length(x)), y=[y ; zeros(size(x,2),hi-length(x))]; endif endif endfunction