--- Saving session to: ECE481_19-Apr-2002.txt --- Processed startup.m --- ; ; ; ; ; ; ; edit karstr fschange('c:\personal\class\2001-02\spring\ece481\matlab\karstr.m'); clear karstr edit karstr acoeff = [1 0 0 0 -0.4 -0.4] acoeff = Columns 1 through 4 1.0000 0 0 0 Columns 5 through 6 -0.4000 -0.4000 bcoeff=1 bcoeff = 1 [F,H]=freqz(bcoeff,acoeff,[0:pi/100:pi]); plot(F,abs(H)) Warning: Imaginary parts of complex X and/or Y arguments ignored. [H,F]=freqz(bcoeff,acoeff,[0:pi/100:pi]); plot(F,abs(H)) acoeff = [1 0 0 0 -0.5 -0.5] acoeff = Columns 1 through 4 1.0000 0 0 0 Columns 5 through 6 -0.5000 -0.5000 [H,F]=freqz(bcoeff,acoeff,[0:pi/100:pi]); Warning: Divide by zero. > In C:\MatLab6p1\toolbox\signal\signal\freqz.m at line 87 plot(F,abs(H)) karstr(300,0.5) Warning: Divide by zero. > In C:\MatLab6p1\toolbox\signal\signal\freqz.m at line 87 In c:\personal\class\2001-02\spring\ece481\matlab\karstr.m at line 51 karstr(300,0.5) Warning: Divide by zero. > In C:\MatLab6p1\toolbox\signal\signal\freqz.m at line 87 In c:\personal\class\2001-02\spring\ece481\matlab\karstr.m at line 51 karstr(300,0.4) karstr(100,0.5) Warning: Divide by zero. > In C:\MatLab6p1\toolbox\signal\signal\freqz.m at line 87 In c:\personal\class\2001-02\spring\ece481\matlab\karstr.m at line 51 zoom on karstr(30,0.5) Warning: Divide by zero. > In C:\MatLab6p1\toolbox\signal\signal\freqz.m at line 87 In c:\personal\class\2001-02\spring\ece481\matlab\karstr.m at line 51 karstr(1000,0.5) Warning: Divide by zero. > In C:\MatLab6p1\toolbox\signal\signal\freqz.m at line 87 In c:\personal\class\2001-02\spring\ece481\matlab\karstr.m at line 51 fschange('c:\personal\class\2001-02\spring\ece481\matlab\karstr.m'); clear karstr karstr(1000,0.5) Warning: Divide by zero. > In C:\MatLab6p1\toolbox\signal\signal\freqz.m at line 87 In c:\personal\class\2001-02\spring\ece481\matlab\karstr.m at line 51 type karstr function karstr(f0,g) % Karplus-Strong plucked string algorithm fs=50e3; %f0=200; %g=0.5; dur=4; N=round(fs/f0); x=zeros(1,dur*fs); x(1:N)=randn(1,N); % whitenoise burst excitation x=x-mean(x); %x(1)=1; x(2:N)=0; % impulse excitation a=[1 zeros(1,N-1) -g -g]; b=[1]; y=filter(b,a,x); % Determine screen size ssize = get(0,'ScreenSize'); swidth = ssize(3); sheight = ssize(4); % Need three figures to fit across top of screen; determine width of each figure fwidth = swidth/3; f1=figure(1); pos=[sheight-(fwidth+20),fwidth,fwidth]; set(f1,'Position',[0 pos],'Name','Time',... 'MenuBar','none') f2=figure(2); set(f2,'Position',[swidth/3 pos],'Name','Freq Response',... 'MenuBar','none') f3=figure(3); set(f3,'Position',[swidth*(2/3) pos],'Name','Spectrogram',... 'MenuBar','none') figure(1) plot((0:length(y)-1)/fs,y) xlabel('Time (s)') ylabel('Amplitude') figure(2) plot(abs(freqz(b,a,[0:pi/100:pi]))) figure(3) calspec(y,[],fs); drawnow %soundsc(y,fs) wavplay(y,fs) exit