1.1课程设计目标设计一个分数倍插值系统,设计要求如下。1.2设计分析输入信号为正弦信号𝑠(t)=sin(2∗π∗𝑓𝑐∗t),正弦信号的频率𝑓𝑐=10Hz,采样点数N=1000,采样频率𝑓𝑠=100𝐻𝑧.整个设计的流程图如下:采样频率fs对输入信号采样输入信号S(t)L=9采样序列S(n)H(z)插值部分V(n)U(n)M=2Y(n)抽取部分首先以采样频率fs=100Hz对输入信号进行采样,采样频率fs满足Nyquist采样定理,的到采样序列S(n),采样序列的点数为N=1000;然后进行9倍插值,即在S(n)的每两个样本点之间补8个零,得到补零后的信号v(n).在频域上S(ejw)是周期为2*pi的周期函数,V(ejw)是周期为2*pi/9的周期函数。插值后,在原信号的一个周期内,出现了L个原信号;然后将插值后的序列v(n)经过一个升余弦滚降滤波器后得到U(n),然后再做2倍抽取处理,最后得到输出y(n).1.2.1升余弦滤波器的设计开始是以采样频率fs=100Hz对输入信号s(n)进行采样,经过9倍插值后的采样频率为fs1=900Hz;滤波器的响应函数为:)其它())/,/min(||0(0)(0MLLeHjL=9,M=2截止带宽为w=𝜋9,即2𝜋𝑓𝑓𝑠1=2𝜋𝑓900=𝜋/9,所以得滤波器截止频率为50Hz。选取滚降因子为0.25,fc=50Hz利用matlab工具设计滤波器如下图所示:1.3实验结果分析输入信号s(t)=sin(2π𝑓𝑐t),其中𝑓𝑐=10𝐻𝑧.在0t1的波形如下:用采样频率𝑓𝑠=100𝐻𝑧,对输入信号进行采样,得到采样后的序列为s(n).下图是采样序列以及采样序列的频谱。其中时间轴上只画出了在0到1范围内的采样值,以下的图都是。把采样序列s(n)做9倍插值处理后得到插值后的序列v(n).其中v(n)={𝑠(𝑛9)𝑛=0,±𝐿,±2𝐿,….0其他matlab做出插值后v(n)图形以及频谱图如下:上图表明,插值后,在一个频域周期内,原来采样序列s(n)的频谱s(ejw)的带宽被压缩了9倍,同时产生了8个映射。经过插值后再通过一个升余弦滚降滤波器,得到序列u(n),滤波器响应函数为:)其它())/,/min(||0(0)(0MLLeHjL=9.M=2Matlab做出u(n)的频谱图如下:经过升余弦滤波器后得到的u(n)再做2倍抽取,得到y(n).y(n)=u(2n)𝑛∈𝑍上式的Z变换为:Y(z)=12∑𝑈(𝑒−𝑗2𝜋𝑘2𝑧1/2)2−1𝑘=0即将信号u(n)做2倍抽取后,所得信号y(n)的频谱等于将原来信号的频谱先做2倍扩展,再在频率轴w上做2kπ,(k=0,1)倍平移,将幅度降为原来的1/2后再叠加。Matlab作图后如图所示:从上图频域中可以看出,抽取后信号的频谱做了2倍扩展,由于上面是一个周期的所以没有看出平移,信号的频域幅度也降为原来的1/2了。经过上面的一系列信号处理后得到原来采样频率的4.5插值。1.4误差分析将原来的模拟信号s(t)做4.5*fs=450Hz(fs=100)采样后,得到实际采样序列y_real_samp,以及他的频域如下图所示:将经过上面的9倍插值和2倍抽取后得到的信号序列y(n)与实际的4.5倍fs采样得到的序列y_real_samp做差后,然后做出的误差曲线如下图所示:平均误差为err_rate=3.5339e-04,上图表明经过插值抽取后得到的y(n)与实际4.5倍fs采样的序列有一定的误差。其中误差的数量级为10-4。之前插值后的升余弦滤波器的滚降因子都是0.25,现在把滚降因子分别改为0.5,0.75和1.00得到的平均误差分别为3.3945e-04,3.1709e-04和2.8754e-04。可以发现滚降因子越大,平均误差越小。附录Matlab程序主程序clc;clearall;t=0:0.001:1;fc=10;%信号频率;x=sin(2*pi*fc*t);%%%%%%%%%%%%%输入模拟信号%%%%%%%%%%%%figure(1);plot(t,x);xlabel('time');ylabel('sin(2*pi*fc*t)');title('输入原始信号');saveas(gcf,'first.jpg')%%%%%%%%%%%%%%%%%%%%%%%%%%%%%对信号进行采样%%%%%%%%%%%%%%%N=1000;%采样点数;fs=100;%采样频率;t=(0:N-1)/fs;x1=sin(2*pi*fc*t);%信号f=-fs/2:fs/(N-1):fs/2;y1=fft(x1);%%%%%%%%%%%%%%%%%%%%%%%画出采样后的信号以及采样信号的频谱%%%%%%%%%%%%%%%figure(2);subplot(2,1,1);stem(t,x1);axis([01-11]);xlabel('time');ylabel('x1');title('采样序列')subplot(2,1,2);plot(f,abs(fftshift(y1)));xlabel('f');ylabel('|S(z)|');title('采样信号的频谱');saveas(gcf,'采样信号.jpg');%%%%%%%%%%%%%%%%%%%%%%%做9倍插值处理%%%%%%%%%%%%%%%%%%%%%%%%%%L=9;fs1=L*fs;%%%%%增加采样率N1=(N-1)*L+1;%%%%%%%%%%%%%插值后的采样点数t=(0:N1-1)/fs1;f=-fs1/2:fs1/(N1-1):fs1/2;v=zeros(1,N1);%%%定义插值后的序列;v(1:9:N1)=x1;%%%%插值后的序列;y2_fft=fft(v);%%%%%%%%%%%%%%%%%%%插值后的信号以及频谱%%%%%%%%%%%%%%%%figure(3);subplot(2,1,1);stem(t,v);axis([01-11]);xlabel('time');ylabel('v(n)');title('插值后序列');subplot(2,1,2);plot(f,abs(fftshift(y2_fft)));xlabel('f');ylabel('|V(z)|');title('插值后的v(n)的频域');saveas(gcf,'插值后的序列.jpg');%%%%%%%%%%%%%%升余弦滤波器%%%%%%%%%%%%%%%%%%%Hd=raisedcosfilter;u_out=L*filter(Hd,v);u_out_fft=fft(u_out);figure(4);plot(f,abs(fftshift(u_out_fft)));xlabel('f');ylabel('|U(z)|');title('经过滤波器后的频谱');saveas(gcf,'rsfilter.jpg');%%%%%%%%%%%%%%%%%%%%%2倍抽取处理%%%%%%%%%%%%%%%%%%%%%%M=2;N2=N1/M;fs2=fs1/M;%%%%%抽取后的采样频率%%%%%%%%%%t=(0:N2-1)/fs2;f=-fs2/2:fs2/(N2-1):fs2/2;y3=zeros(1,N2);y3=u_out(1:2:N1);%%%%%抽取后的采样序列y3_fft=fft(y3);figure(5);subplot(2,1,1);stem(t,y3);axis([01-11]);xlabel('time');ylabel('y3(n)');title('2倍抽取后的序列');subplot(2,1,2);plot(f,abs(fftshift(y3_fft)));xlabel('f');ylabel('|Y3(z)|');title('2倍抽取后的频域');saveas(gcf,'chouqu.jpg');%%%%%%%%%%误差计算%%%%%%%%%%%%%%t1=(0:N2-1)/fs2;y_real_samp=sin(2*pi*fc*t1);err1=zeros(1,N2);err1=y3-y_real_samp;err_rate=sum(err1)/N2;figure(6);subplot(2,1,1);stem(t1,y_real_samp);axis([01-11]);xlabel('time');ylabel('y_real_samp');title('实际采样序列');subplot(2,1,2);f2=-fs2/2:fs2/(N2-1):fs2/2;plot(f2,abs(fftshift(fft(y_real_samp))));xlabel('f/Hz');ylabel('|Y_real_samp(z)|');title('实际采样序列fs2=4.5*fs的频域');saveas(gcf,'实际4.5.jpg');figure(7);stem(err1);saveas(gcf,'wucha.jpg');滤波器函数functionHd=raisedcosfilter%RAISEDCOSFILTERReturnsadiscrete-timefilterobject.%%MATLABCode%GeneratedbyMATLAB(R)8.0andtheSignalProcessingToolbox6.18.%%Generatedon:21-Oct-201521:46:02%%FIRWindowRaised-cosinefilterdesignedusingtheFIRRCOSfunction.%AllfrequencyvaluesareinHz.Fs=900;%SamplingFrequencyN=10;%OrderFc=50;%CutoffFrequencyTM='Rolloff';%TransitionModeR=0.25;%RolloffDT='Normal';%DesignTypeBeta=0.5;%WindowParameter%Createthewindowvectorforthedesignalgorithm.win=kaiser(N+1,Beta);%CalculatethecoefficientsusingtheFIR1function.b=firrcos(N,Fc/(Fs/2),R,2,TM,DT,[],win);Hd=dfilt.dffir(b);%[EOF]