Discussion:
Simulation of Aliasing
(too old to reply)
r***@gmail.com
2020-07-06 15:04:20 UTC
Permalink
I ran across a problem in a DSP book that got me to thinking (the best kind of problem). The author suggests that we can illustrate aliasing by sampling an audio signal at a high frequency and then replacing samples with zeroes to get a lower effective sampling frequency. For example, if we sample at fs1 = 32 kHz and then keep every M = 4th sample (replacing the other samples with zeroes) then the resulting signal is equivalent to sampling at fs2 = 8 kHz (fs1/M).

I agree that aliasing is present (if the original signal has content above 4 kHz), but if you play the new signal back at 32 kHz you will also hear "replica" distortion. To get a better sense of just aliasing due to sampling at 8 kHz you should low pass filter the new signal with a cutoff frequency of 4 kHz (fs2/2 or fs1/(2M)).

The process appears to be the same as down-sampling (without an anti-aliasing filter, since the goal is to demonstrate aliasing) followed by up-sampling at the same rate. I think you still need to follow the up-sampler with a low-pass (replica elimination) filter to generate a signal that when played back at 32 kHz sounds the same as sampling (and replaying) the original analog signal at 8 kHz (without using an anti-aliasing filter).

Note: I am not arguing that the author is wrong. I am just looking for verification that my thinking is correct (or not). The problem is presented very early in the book (and it is a very good book) before filtering is even discussed. He says that this zero-replacement method will illustrate distortion due to aliasing. He does not say that it is exactly equivalent to the signal that would be obtained by sampling at the lower rate without an anti-aliasing filter. It just got me to thinking about a better way (perhaps) to demonstrate only aliasing.

Tony
g***@u.washington.edu
2020-07-06 17:30:36 UTC
Permalink
Post by r***@gmail.com
I ran across a problem in a DSP book that got me to thinking
(the best kind of problem).
The author suggests that we can illustrate aliasing by sampling an
audio signal at a high frequency and then replacing samples with zeroes
to get a lower effective sampling frequency. For example, if we
sample at fs1 = 32 kHz and then keep every M = 4th sample
(replacing the other samples with zeroes) then the resulting signal
is equivalent to sampling at fs2 = 8 kHz (fs1/M).
I agree that aliasing is present (if the original signal has content
above 4 kHz), but if you play the new signal back at 32 kHz you will
also hear "replica" distortion. To get a better sense of just aliasing
due to sampling at 8 kHz you should low pass filter the new signal
with a cutoff frequency of 4 kHz (fs2/2 or fs1/(2M)).
Without getting too much detail, it does seem like two different things.

I didn't know the name "replica distortion" before.

Another choice is to generate four copies of every fourth sample.

I think you should try them all and see what they sound like.
r***@gmail.com
2020-07-06 18:03:16 UTC
Permalink
Post by g***@u.washington.edu
Post by r***@gmail.com
I ran across a problem in a DSP book that got me to thinking
(the best kind of problem).
The author suggests that we can illustrate aliasing by sampling an
audio signal at a high frequency and then replacing samples with zeroes
to get a lower effective sampling frequency. For example, if we
sample at fs1 = 32 kHz and then keep every M = 4th sample
(replacing the other samples with zeroes) then the resulting signal
is equivalent to sampling at fs2 = 8 kHz (fs1/M).
I agree that aliasing is present (if the original signal has content
above 4 kHz), but if you play the new signal back at 32 kHz you will
also hear "replica" distortion. To get a better sense of just aliasing
due to sampling at 8 kHz you should low pass filter the new signal
with a cutoff frequency of 4 kHz (fs2/2 or fs1/(2M)).
Without getting too much detail, it does seem like two different things.
I didn't know the name "replica distortion" before.
Another choice is to generate four copies of every fourth sample.
I think you should try them all and see what they sound like.
Oh, I have tried it. With a 400 Hz tone and original sampling at 32 kHz and then reducing the sample rate to 2 kHz you can hear the 1600 Hz replica. There are spectral lines at (n*2000 +- 400). If you reduce the sample rate to 500 Hz you can hear an alias at 100 Hz. The spectral lines are at (n*500 +- 400). I am playing around with a replica elimination filter now so that I only hear the distortion due to aliasing. The goal is to produce a signal that would sound the same as an undersampled signal.
r***@gmail.com
2020-07-06 18:07:10 UTC
Permalink
Post by r***@gmail.com
Post by g***@u.washington.edu
Post by r***@gmail.com
I ran across a problem in a DSP book that got me to thinking
(the best kind of problem).
The author suggests that we can illustrate aliasing by sampling an
audio signal at a high frequency and then replacing samples with zeroes
to get a lower effective sampling frequency. For example, if we
sample at fs1 = 32 kHz and then keep every M = 4th sample
(replacing the other samples with zeroes) then the resulting signal
is equivalent to sampling at fs2 = 8 kHz (fs1/M).
I agree that aliasing is present (if the original signal has content
above 4 kHz), but if you play the new signal back at 32 kHz you will
also hear "replica" distortion. To get a better sense of just aliasing
due to sampling at 8 kHz you should low pass filter the new signal
with a cutoff frequency of 4 kHz (fs2/2 or fs1/(2M)).
Without getting too much detail, it does seem like two different things.
I didn't know the name "replica distortion" before.
Another choice is to generate four copies of every fourth sample.
I think you should try them all and see what they sound like.
Oh, I have tried it. With a 400 Hz tone and original sampling at 32 kHz
and then reducing the sample rate to 2 kHz you can hear the 1600 Hz
replica. There are spectral lines at (n*2000 +- 400). If you reduce the
sample rate to 500 Hz you can hear an alias at 100 Hz. The spectral lines
are at (n*500 +- 400). I am playing around with a replica elimination
filter now so that I only hear the distortion due to aliasing. The goal is
to produce a signal that would sound the same as an undersampled signal.
The Octave/MATLAB code for this is below:

%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% This procedure is equivalent to down-sampling (without a LPF anti-aliasing
% filter) followed by up-sampling (without a LPF anti-replica) filter.
%
% To truly hear only aliasing a LPF anti-replica filter should be used.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%

f0 = 400;
fs = 32000; % sample rate
t = 2; % seconds

xf = @(f0, fs, n) 0.75*sin(2*pi*f0*n/fs);
n = (0:t*fs-1);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%
x = xf(f0, fs, n);
X = fft(x);
clf;
subplot(3,2,1)
plot((0:length(X)-1)*fs/length(X), 20*log10(abs(X)))
xlim([0 5000])
drawnow();
player = audioplayer(x, fs);
playblocking(player)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%
fsn = 2000;
r = fs/fsn; % 16
xn = zeros(size(x));
xn(1:r:end) = x(1:r:end);
X = fft(xn);
subplot(3,2,3)
plot((0:length(X)-1)*fs/length(X), 20*log10(abs(X)))
xlim([0 5000])
drawnow();
player = audioplayer(xn, fs);
playblocking(player)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%
fsn = 500;
r = fs/fsn; % 64
xn = zeros(size(x));
xn(1:r:end) = x(1:r:end);
X = fft(xn);
subplot(3,2,5)
plot((0:length(X)-1)*fs/length(X), 20*log10(abs(X)))
xlim([0 5000])
drawnow();
player = audioplayer(xn, fs);
playblocking(player)
r***@gmail.com
2020-07-06 18:38:35 UTC
Permalink
Post by g***@u.washington.edu
Post by r***@gmail.com
I ran across a problem in a DSP book that got me to thinking
(the best kind of problem).
The author suggests that we can illustrate aliasing by sampling an
audio signal at a high frequency and then replacing samples with zeroes
to get a lower effective sampling frequency. For example, if we
sample at fs1 = 32 kHz and then keep every M = 4th sample
(replacing the other samples with zeroes) then the resulting signal
is equivalent to sampling at fs2 = 8 kHz (fs1/M).
I agree that aliasing is present (if the original signal has content
above 4 kHz), but if you play the new signal back at 32 kHz you will
also hear "replica" distortion. To get a better sense of just aliasing
due to sampling at 8 kHz you should low pass filter the new signal
with a cutoff frequency of 4 kHz (fs2/2 or fs1/(2M)).
Without getting too much detail, it does seem like two different things.
I didn't know the name "replica distortion" before.
Another choice is to generate four copies of every fourth sample.
I think you should try them all and see what they sound like.
Generating four copies of every fourth sample would be equivalent to convolving the zeroed signal with a 4-sample rect pulse. in the frequency domain this would be equivalent to multiplying by a sinc whose first null is at the location of the first replica. I don't see this is being as effective in achieving my goal as a LP replica elimination filter. (The goal is to produce a signal which has the same spectrum as undersampling the original analog signal.)
Loading...