Chris' Page on Aliasing using MatLab

From Class Wiki
Revision as of 10:53, 12 November 2007 by Pridma (talk | contribs) (→‎Demo of Aliasing Using Matlab)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

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.


Chirp41000b.jpg

Media:44100hz.ogg


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

Chirp8000b.jpg

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