Chris' Page on Aliasing using MatLab: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
|||
(10 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. |
||
Currently the Y-Axis frequency scale is wrong, the max should be 20,000. |
|||
⚫ | |||
[[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. |
||
⚫ | |||
⚫ | |||
⚫ | |||
[[Media:8000hz.ogg]] |
|||
⚫ | |||
% Matlab assignment |
|||
⚫ | |||
% Show Nyquist stuff |
|||
<pre> |
|||
⚫ | |||
% Based on Matlab examples |
|||
% Show aliasing |
|||
clc |
clc |
||
%****************% |
%****************% |
||
% Parameters |
% Parameters |
||
duration = 8 |
duration = 8 |
||
fmax = 20000 |
fmax = 20000 |
||
fmin = 20 |
fmin = 20 |
||
samplerate = 8000 |
samplerate = 8000 |
||
%****************% |
%****************% |
||
%****************% |
%****************% |
||
Line 43: | 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 115: | 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 10: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