Chris' Page on Aliasing using MatLab: Difference between revisions

From Class Wiki
Jump to navigation Jump to search
ChrisRas (talk | contribs)
m Added sound files
Pridma (talk | contribs)
 
(4 intermediate revisions by 2 users not shown)
Line 13: Line 13:


This one is the same script and parameters except the sample rate has been changed to 8000 Hertz.
This one is the same script and parameters except the sample rate has been changed to 8000 Hertz.
[[Image:Chirp8000b.jpg]]
[[Image:Chirp8000b.jpg]]


Line 20: Line 21:
'''Matlab Program'''
'''Matlab Program'''


<pre>
% Chris Rasmussen
% Chris Rasmussen
 
% Based on Matlab examples
% Matlab assignment
% Show aliasing
 
% Show Nyquist stuff
 


clc
clc
%****************%
%****************%
% Parameters
% Parameters
duration = 8
duration = 8
fmax = 20000
fmax = 20000
fmin = 20
fmin = 20
samplerate = 8000
samplerate = 8000
%****************%
%****************%


%****************%
%****************%
Line 48: Line 39:
% Will still work if this is removed, you just won't hear anything
% Will still work if this is removed, you just won't hear anything
% It works with my onboard soundcard with Vista.
% It works with my onboard soundcard with Vista.
AO = analogoutput('winsound');
AO = analogoutput('winsound');
chan = addchannel(AO,1);
chan = addchannel(AO,1);
set(AO,'SampleRate',samplerate);
set(AO,'SampleRate',samplerate);
set(AO,'TriggerType','Manual');
set(AO,'TriggerType','Manual');
ActualRate = get(AO,'SampleRate')
ActualRate = get(AO,'SampleRate')
%****************%
%****************%


%****************%
%****************%
% Setup arrays
% Setup arrays
totalsamples = ActualRate*duration;
totalsamples = ActualRate*duration;
t = 0:1./ActualRate:duration;  
t = 0:1./ActualRate:duration;  
y= 0.2 .* chirp(t,fmin,duration, fmax,'q',[],'concave');
y= 0.2 .* chirp(t,fmin,duration, fmax,'q',[],'concave');
%****************%
%****************%


%****************%
%****************%
% Write data to soundcard and play
% Write data to soundcard and play
% Will still work if this is removed, you just won't hear anything
% Will still work if this is removed, you just won't hear anything
putdata(AO,y')
putdata(AO,y')
start(AO)
start(AO)
trigger(AO)
trigger(AO)
waittilstop(AO,duration+1)
waittilstop(AO,duration+1)
%****************%
%****************%


%****************%
%****************%
% Plot raw data
% Plot raw data
figure(1)
figure(1)
plot(y)
plot(y)
title('Waveform')
title('Waveform')
%****************%
%****************%


%****************%
%****************%
% Plot spectragram (uses FFT)
% Plot spectragram (uses FFT)
figure(3), specgram(y, 256, samplerate);
figure(3), specgram(y, 256, samplerate);
title('Quadratic Sine Sweep')
title('Quadratic Sine Sweep')
set(gcf,'Color',[1 1 1]);
set(gcf,'Color',[1 1 1]);
%****************%
%****************%


Line 120: Line 79:


%****************%
%****************%
% Picking up the messes
% Picking up the messes
delete(AO)
delete(AO)
clear AO
clear AO
clear all
clear all
</pre>

Latest revision as of 11:53, 12 November 2007

Demo of Aliasing Using Matlab

Frequencies above half the sample rate will produce aliasing. This should appear as a lower frequency signal.


Below is a spectrogram of a quadratic sweep from 20 Hertz to 20,000 Hertz using a 441000 Hertz sample rate.


Media:44100hz.ogg


This one is the same script and parameters except the sample rate has been changed to 8000 Hertz.

Media:8000hz.ogg


Matlab Program

% Chris Rasmussen
% Based on Matlab examples
% Show aliasing

clc
%****************%
% Parameters
duration = 8
fmax = 20000
fmin = 20
samplerate = 8000
%****************%

%****************%
% Setup Soundcard 
% Will still work if this is removed, you just won't hear anything
% It works with my onboard soundcard with Vista.
AO = analogoutput('winsound');
chan = addchannel(AO,1);
set(AO,'SampleRate',samplerate);
set(AO,'TriggerType','Manual');
ActualRate = get(AO,'SampleRate')
%****************%

%****************%
% Setup arrays
totalsamples = ActualRate*duration;
t = 0:1./ActualRate:duration; 
y= 0.2 .* chirp(t,fmin,duration, fmax,'q',[],'concave');
%****************%

%****************%
% Write data to soundcard and play
% Will still work if this is removed, you just won't hear anything
putdata(AO,y')
start(AO)
trigger(AO)
waittilstop(AO,duration+1)
%****************%

%****************%
% Plot raw data
figure(1)
plot(y)
title('Waveform')
%****************%

%****************%
% Plot spectragram (uses FFT)
figure(3), specgram(y, 256, samplerate);
title('Quadratic Sine Sweep')
set(gcf,'Color',[1 1 1]);
%****************%

wavwrite(y,samplerate,16,'File.wav')

%****************%
% Picking up the messes
delete(AO)
clear AO
clear all