我想你问的应该是抽取和内插吧
实现起来可以用matlab里的函数decimate()和interp()
分别具两个例子:
抽取:
k=1;
T=4;
fc=k*T;
fs=4*fc;
Ts=1/fs;
N=T/Ts;
x=zeros(1,N);
t=0:N-1;
x=cos(k*pi*(t*Ts).^2);
subplot(2,2,1);
stem(t*Ts,x);
title('原始信号杆图')
xlabel('time')
M=2;
y=decimate(x,M);
tnew=0:N/M-1;
subplot(2,2,3);
stem(tnew*M*Ts,y);
title('抽取后信号的杆图')
xlabel('time')
X=fft(x);
X=fftshift(X);
subplot(2,2,2);
plot((t-N/2)*fs/N,abs(X));
title('原始信号频谱')
xlabel('frequency')
Y=fft(y);
Y=fftshift(Y);
subplot(2,2,4);
plot((tnew-N/M/2)*fs/N,abs(Y));
title('抽取后信号频谱')
xlabel('frequency')
内插:
发生失真后的波形和频谱
k=1;
T=4;
fc=k*T;
fs=2*fc;
Ts=1/fs;
N=T/Ts;
x=zeros(1,N);
t=0:N-1;
x=cos(k*pi*(t*Ts).^2);
subplot(2,2,1);
stem(t*Ts,x);
title('原始信号杆图')
M=2;
y=decimate(x,M);
tnew=0:N/M-1;
subplot(2,2,3);
stem(tnew*M*Ts,y);
title('抽取后信号的杆图')
X=fft(x);
X=fftshift(X);
subplot(2,2,2);
plot((t-N/2)*fs/N,abs(X));
title('原始信号频谱)
Y=fft(y);
Y=fftshift(Y);
subplot(2,2,4);
plot((tnew-N/M/2)*fs/N,abs(Y));
波形直接运行就出来了,就不在上传了。
|