信号与系统 Matlab 时域抽样与频域抽样
时域抽样定理给出了连续信号抽样过程中信号不失真的约束条件:对于基带信号,信号抽样频率大于等于2倍的信号最高频率,即。
时域抽样是把连续信号x(t)变成适于数字系统处理的离散信号x[k] ;信号重建是将离散信号x[k]转换为连续时间信号x(t)。
非周期离散信号的频谱是连续的周期谱。计算机在分析离散信号的频谱时,必须将其连续频谱离散化。频域抽样定理给出了连续频谱抽样过程中信号不失真的约束条件。
- 为了观察连续信号时域抽样时抽样频率对抽样过程的影响,在[0,0.1]区间上以50Hz的抽样频率对下列3个信号分别进行抽样,试画出抽样后序列的波形,并分析产生不同波形的原因,提出改进措施。
答: matlab代码如下:
f0=10; %基波频率,分别取10;50;100
f=50; T=1/f; %采样频率f,采样间隔T
t=0:0.001:0.1;
n=0:T:0.1;
xt=cos(2*pi*f0*t); %原信号
xn=cos(2*pi*f0*n); %采样信号
plot(t,xt);
hold on;
stem(n,xn);
x1(t)采样结果:
x2(t)采样结果:
x3(t)采样结果:
结果分析: 采样频率50Hz,原信号x1(t),x2(t),x3(t)的基波频率分别为10Hz,50Hz,100Hz。
故采样序列x1[n]在一个周期内有五个采样点,可大致看出原信号的正弦波形式。而信号x2(t)的采样频率与基波频率相同,每个周期只采样一个点,x2[n]表现为等间隔脉冲序列。x3(t)的采样频率只有基波频率的一半,故每两个周期采样一个点,x3[n]也是等间隔脉冲序列。可见对于频率较大的周期信号,采样频率应尽可能的大,一般为,采样信号才会更接近原信号。
2.产生幅度调制信号,推导其频率特性,确定抽样频率,并绘制波形。
答:幅度调制信号载波频率100Hz,故取采样频率200Hz。matlab程序如下:
t=0:0.001:1;
xt=cos(2*pi*t).*cos(200*pi*t); %原信号
f=200; T=1/f; %采样频率f,采样间隔T
n=0:T:1;
xn=cos(2*pi*n).*cos(200*pi*n); %采样信号
plot(t,xt);
hold on;
stem(n,xn);
3. 对连续信号进行抽样以得到离散序列,并进行重建。
(1) 生成信号x(t),时间t=0:0.001:4,画出的波形。
(2) 以对fsam=10Hz信号进行抽样,画出在0<t<=1范围内的抽样序列x[k];利用抽样内插函数恢复连续时间信号,画出重建信号的波形xr(t)。xr(t)与x(t)是否相同,为什么?
(3) 将抽样频率改为,重做(2)。
答:(1)
t=0:0.001:4;
x=cos(4*pi*t);
plot(t,x);
(2)
fs=10; Ts=1/fs;
L=1;
t=0:0.001:L;
x=cos(4*pi*t);
subplot(2,1,1);
plot(t,x);
hold on;
n=0:fs*L;
tn=n*Ts;
x1=cos(4*pi*tn);
stem(tn,x1);
axis([0,1,-1.2,1.2]);
xlabel('x(t) and x[k]');
xr=x1*sinc( fs* ( ones(length(n),1) * t - tn' * ones(1,length(t))));
subplot(2,1,2);
plot(t,xr);
axis([0,1,-1.2,1.2]);
xlabel('xr(t)');
还原出的信号xr(t)与原信号x(t)基本相同,但由于低通滤波器不是完全理想的,xr(t)与x(t)之间存在略微的误差。
(3)将(2)中代码fs=10改成fs=3,结果如下:
不能还原出原信号x(t),这是因为x(t)的基波频率为fm=2,故采样频率fsam必须大于等于2fm,即fsam>=4,才能保证频谱不发生混叠,从而通过抽样内插函数恢复出原信号。
- 已知序列x[k]={1,3,2,-5;k=0, 1, 2, 3}, 分别取N=2,3,4,5对其频谱进行抽样,再由频率抽样点恢复时域序列,观察时域序列是否存在混叠,有何规律?
答:
k=[0,1,2,3];
x=[1,3,2,-5];
n=1000;
w=[0:n-1]*2*pi/n;
X=fft(x,n); %频谱
subplot(2,1,1);
plot(w,abs(X));
hold on ;
N=2; %分别取N=2,3,4,5
wn=[0:N-1]*2*pi/N;
Xn=[]; %频谱抽样序列
for i=0:N-1
Xn=[Xn,X(1+fix(i*n/N))];
end
stem(wn,abs(Xn));
x1=ifft(Xn); %还原的时域序列
subplot(2,1,2);
stem([0:N-1],x1);
运行结果:
N=2
N=3
N=4
N=5
当取N=2,3时,时域序列发生了混叠;取N=4,5时,可以恢复出原时域序列x[k]。可见对于有限长的M点离散时间信号的频域采样,必须以为频域的采样间隔,其中N为整数,且满足,才能恢复出不发生混叠的时域序列。