Chris' Page on Aliasing using MatLab: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
|||
(11 intermediate revisions by 2 users not shown) | |||
Line 5: | Line 5: | ||
Below is a spectrogram of a quadratic sweep from 20 Hertz to 20,000 Hertz using a 441000 Hertz sample rate. | Below is a spectrogram of a quadratic sweep from 20 Hertz to 20,000 Hertz using a 441000 Hertz sample rate. | ||
[[Image: | |||
[[Image:Chirp41000b.jpg]] | |||
[[Media:44100hz.ogg]] | |||
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: | |||
[[Image:Chirp8000b.jpg]] | |||
[[Media:8000hz.ogg]] | |||
'''Matlab Program''' | |||
<pre> | |||
% 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 | |||
</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.
This one is the same script and parameters except the sample rate has been changed to 8000 Hertz.
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