view aim-mat/tools/@signal/genbandpassnoise.m @ 0:74dedb26614d

Initial checkin of AIM-MAT version 1.5 (6.4.2011).
author tomwalters
date Fri, 20 May 2011 12:32:31 +0100
parents
children 20ada0af3d7d
line wrap: on
line source
% method of class @signal
% function sig=genbandpassnoise(sig,varargin)
%   INPUT VALUES:
%       sig: @signal with length and samplerate 
%   RETURN VALUE:
%       sig:  @signal 
%
% (c) 2003-2008, University of Cambridge, Medical Research Council 
% Maintained by Tom Walters (tcw24@cam.ac.uk), written by Stefan Bleeck (stefan@bleeck.de)
% http://www.pdn.cam.ac.uk/cnbh/aim2006
% $Date: 2008-06-10 18:00:16 +0100 (Tue, 10 Jun 2008) $
% $Revision: 585 $

function sig=genbandpassnoise(sig,lowfrequency,highfrequency)
% steepness is given in dB per octave (to make it compatible with Fastl)

len=getlength(sig);
sr=getsr(sig);

% generate white noise:
vals=getvalues(sig);

nyquist_frequenz=sr/2;
N=getnrpoints(sig);

n1=round(lowfrequency/nyquist_frequenz*N/2);
n2=round(highfrequency/nyquist_frequenz*N/2);

if n1<=0
    n1=1;
end
if n2>N
    n2=N;
end

noise1=zeros(size(vals));
noise2=zeros(size(vals));
for i=n1:n2
    noise1(i)=rand(1);
end
for i=N-n2:N-n1
    noise2(i)=rand(1);
end
ftband=noise1+ i*noise2;
vals=ifft(ftband);
vals=real(vals);

sig=setvalues(sig,vals);
sig=setname(sig,sprintf('Bandpass filtered noise from %4.1f Hz to %4.1f Hz',lowfrequency,highfrequency));

return