一、上下采样的基本函数
1、上采样对信号进行插值,进行零插值
采用的函数:
y_up= upsample(y, 4); %y:需要上采样的序列,4:上采样间隔
2、下采样对信号进行抽取
采用的函数:
y_down= downsample(y, 4); %y:需要下采样的序列,4:抽取间隔
二、
1.设计内容
(1)有一段以采样频率8192Hz采样得到的语音数据,存在文件“erf1s1t0”中,信号长度不够时信号补零使其长度为8192。
(2)对采集得到的语音信号进行fft,分析信号频谱特性;
(3)对语音信号对进行下采样(每隔4中抽取一个采样),演示采样信号的声音效果,分析信号的频谱特性,绘出其频谱并进行分析。
(4)对语音信号进行上采样(上采样系数为D=4),演示上采样信号的声音效果,分析其频谱并进行分析。
(5)先对语音信号进行低通滤波(截止频率为Fs/D的线性相位FIR滤波器,过渡带宽度为0.04Fs),再对其进行下采样;然后进行上采样(系数为D),对上采样信号进行低通滤波,比较该信号与原始信号的差别,并进行分析。
(6)试用IIR低通滤波器对语音信号做相同处理,比较结果的区别。
Fs=8192;
data=load('erf1s1t0');
x=data;
x(8192)=0; % zero-pad if lenth(data) < 8192
wc=Fs/4/Fs;N=8192; %理想低通滤波器截止频率(关于pi归一化)
Bt=0.04*Fs*2*pi/Fs; %过渡带宽度指标
Nw=ceil(11*pi/Bt); %blackman窗的长度N ceil取最大整数
hn=fir1(Nw-1,wc,blackman(Nw)); %阻带最小衰减为60dB 可以用blackman窗
disp(Nw-1); %窗函数法设计滤波器 滤波器长度-1=阶数
ywt=fftfilt(hn,x,N); %调用函数fftfilt对x滤波
%窗函数法设计法的绘图部分(滤波器损耗函数, 滤波器输出信号波形)
xlabel('f/Hz');ylabel('幅度');
t=(0:N-1)/Fs;
figure(2);subplot(4,2,1);
plot(t,ywt,'b');
grid on;
%滤波之后的频谱
Xk1=fft(ywt);Xk1=fftshift(Xk1);
subplot(4,2,2);plot(abs(Xk1));title('进行滤波之后的信号的频谱');
%下采样后的序列
y_down = downsample(ywt, 4);
ny=0:length(y_down)-1;
subplot(4,2,3);
plot(ny,y_down,'.')
box on;
title('下采样序列');
%下采样之后的频谱
Xk2=fft(y_down);Xk2=fftshift(Xk2);
subplot(4,2,4);plot(abs(Xk2));title('进行下采样之后的信号的频谱');
%上采样后的序列
y_up= upsample(y_down, 4); %上采样序列
ny=0:length(y_up)-1;
subplot(4,2,5);
plot(ny,y_up,'.')
box on;
title('上采样序列');
%上采样之后的频谱
Xk3=fft(y_up);Xk3=fftshift(Xk3);
subplot(4,2,6);plot(abs(Xk3));title('进行上采样之后的信号的频谱');
ywt1=fftfilt(hn,y_up,N); %调用函数fftfilt对y_up滤波
%窗函数法设计法的绘图部分(滤波器损耗函数, 滤波器输出信号波形)
f=(0:1023)*Fs/1024;
xlabel('f/Hz');ylabel('幅度');
t=(0:N-1)/Fs;
subplot(4,2,7);
plot(t,ywt1,'b');
grid on;
%滤波之后的频谱
Xk4=fft(ywt1);Xk4=fftshift(Xk4);
subplot(4,2,8);plot(abs(Xk4));title('最终滤波之后的信号的频谱');