这篇博文中使用的模拟信号为上篇博文:【 MATLAB 】使用 MATLAB 实现模拟信号的近似及其连续傅里叶变换

中使用的模拟信号:

【 MATLAB 】模拟信号采样及离散时间傅里叶变换(DTFT)案例分析_采样频率

为了研究在频域数量上的采样效果,对该信号使用两种不同的采样频率采样。

a. 在 fs = 5000 对信号进行采样,求出并画出其离散时间傅里叶变换;

b. 在 fs = 1000 对信号采样,求出并画出其离散时间傅里叶变换。

题解:

上篇博文也分析了,信号的带宽为2kHz,奈奎斯特频率就为 4000 样本/s,它小于第一问给出的采样频率,所以频谱混叠几乎不存在。

我们通过MATLAB验证下:

clc
clear
close all

% Analog signal
Dt = 0.00005;
t = - 0.005:Dt:0.005;
xa = exp(-1000 * abs(t));

% Discrete-time signal
Ts = 0.0002;
n = -25:25;
x = exp(-1000*abs(n*Ts));

%Discrete-time Fourier Transform
K = 500;
k = 0:1:K;
w = pi*k/K;
X = x*exp(-j*n'*w);
X = real(X);
w = [-fliplr(w),w(2:K+1)];
X = [fliplr(X),X(2:K+1)];

subplot(2,1,1);
plot(t*1000,xa);
xlabel('t in msec');ylabel('x(n)');
title('Discrete signal');
hold on
stem(n*Ts*1000,x);
gtext('Ts = 0.2msec');
hold off

subplot(2,1,2);
plot(w/pi,X);
xlabel('Frequency in pi units');ylabel('X(w)');
title('Discrete - time Fourier Transform');

 

【 MATLAB 】模拟信号采样及离散时间傅里叶变换(DTFT)案例分析_采样频率_02

继续作答第二问,将采样间隔改为0.001s,10ms时间区间内能采样11个点。

clc
clear
close all

% Analog signal
Dt = 0.00005;
t = - 0.005:Dt:0.005;
xa = exp(-1000 * abs(t));

% Discrete-time signal
Ts = 0.001;
n = -5:5;
x = exp(-1000*abs(n*Ts));

%Discrete-time Fourier Transform
K = 500;
k = 0:1:K;
w = pi*k/K;
X = x*exp(-j*n'*w);
X = real(X);
w = [-fliplr(w),w(2:K+1)];
X = [fliplr(X),X(2:K+1)];

subplot(2,1,1);
plot(t*1000,xa);
xlabel('t in msec');ylabel('x(n)');
title('Discrete signal');
hold on
stem(n*Ts*1000,x);
gtext('Ts = 1msec');
hold off

subplot(2,1,2);
plot(w/pi,X);
xlabel('Frequency in pi units');ylabel('X(w)');
title('Discrete - time Fourier Transform');

【 MATLAB 】模拟信号采样及离散时间傅里叶变换(DTFT)案例分析_傅里叶变换_03

很明显,这个DTFT7已经变了,也就是发生了频谱混叠。