一:实验题目:
(提取淹没在噪声中的周期信号)提取淹没在噪声中的周期信号要求自相关(以判断周期)和互相关(以恢复信号自身)。
(a)生成信号x[n] =sin(0.1*n*pi),0n499.增加一些均匀分布的随机噪声(其噪声幅度为2,平均值为0)以得到噪声信号s[n]。作出每个信号随参数n变化的图形。是否能够从所画的x[n]中判断出任何的周期性?如果可以,求周期N。能否由所画得s[n]判断出任何周期性?
(b)求x[n]的周期自相关rpx[n]并作图。能否由所作的rpx[n]判断出任何周期性?如果可以,求周期N。这个N是否与x[n]的周期相同?
(c)利用上面所求的N值(如果没有,则由x[n]判断)生成一个500样本的冲击串
i[n](nkN), 0≤n≤499。求出s[n]和i[n]的周期互相关。
二:实验目的
学习自相关函数和互相关函数的求解。
提取淹没在噪声中的周期信号,用Multable编写所要求的内容,并画出图形。要求自相关(以判断周期)和互相关(以恢复信号自身)。 五:程序框图
六:源程序
(a)
1)x的代码:
n=0:1:500; %n从0到500变化,每间隔为1 x=5*sin(0.1*pi*n); %正弦函数表达式 s='b-'; %线条颜色为蓝色 figure:subplot(2,1,1),plot(n,x,s); hold on; %画出线条
xlabel('N'); %横坐标为N
ylabel('幅度'); %纵坐标为“幅度”
2)x的自相关(判断周期)的代码:
n=0:1:500; %n从0到500变化,每间隔为1 x=5*sin(0.1*pi*n); %正弦函数表达式 [rxx,n]=xcorr(x);
s='b-'; %线条颜色为蓝色 figure;subplot(2,1,1),plot(n,rxx,s); hold on; %画出线条 xlabel('N'); %横坐标为N
ylabel('幅度'); %纵坐标为“幅度”
3)v(随机噪声)的代码:
v=2*rand(1,500); %产生随机噪声 s='b-'; %线条颜色为蓝色 figure;subplot(2,1,1),plot(n,v,s); hold on; %画出线条 xlabel('N'); %横坐标为N
ylabel('幅度'); %纵坐标为“幅度” title('v=2*rand(1,500)'); %名称为v=2*rand(1,500)
4)y(噪声信号)的代码:
n=0:1:500; %n从0到500变化,每间隔为1 x=5*sin(0.1*pi*n); %正弦函数表达式 v=2*rand(1,500); %产生随机噪声 y=x+v; %产生噪声信号 s='b-'; %线条颜色为蓝色 figure;subplot(2,1,1),plot(n,y,s); hold on; %画出线条
xlabel('N'); %横坐标为N
ylabel('幅度'); %纵坐标为“幅度”
title('y=5*sin(0.1*pi*n)+2*rand(0,500)'); %名称为y=5*sin(0.1*pi*n)+2*rand(0,500)
5)y的自相关(判断周期)的代码:
n=0:1:500; %n从0到500变化,每间隔为1 x=5*sin(0.1*pi*n); %正弦函数表达式 v=2*rand(1,500); %产生随机噪声 y=x+v; %产生噪声信号 [ryy,n]=xcorr(y);
s='b-'; %线条颜色为蓝色 figure;subplot(2,1,1),plot(n,ryy,s); hold on; %画出线条
xlabel('N'); %横坐标为N
ylabel('幅度'); %纵坐标为“幅度”
6) 互相关的代码: n=0:499;
x=5*sin(0.1*n*pi); v=rand(1,500)*2; s=x+v;
i=(n/20==floor(n/20)); %冲击串
re=xcorr(s,i); N=length(re); n=1:N;
subplot(2,2,[1:2]); stem(i);
title('冲击串图象'); subplot(2,2,[3:4]); plot(n,re);
title('经过躁声的周期性函数与冲击串的互相关图象');
七 程序结果及图表
由图形可以判断原函数与其自相关函数的周期是相同的,都为N=12.5。 1)x的图形:
2)x的自相关图形:
3)v随机噪声的图形:
4)y(噪声信号)的图形:
5)y的自相关图形:
6)互相关的图形:
一:实验题目
现考虑下图所示的二进制通信系统,对信号发生器的输出乘上一个二进制(1)PN序列。同一个二进制PN序列用来与解调器输入相乘,因此消除了这个PN序列在期望信号上的影响。信道将传送信号受到一宽带加性噪声序列ω(n)和一正弦干扰序列i(n)=Asinω0n, 0<ω0<π的污损。可以假定A≥M,这里M是来自调制器的每比特的样本数。用和不用PN序列执行这个仿真系统,并在条件A≥M下,对不同的M值(如M=50,100,500,1000)测量差错率。画出每种情况的差错率曲线,作比较并说明结论。说明这个PN序列对于正弦干扰信号的效果。由此说明为什么PN扩频系统在正弦干扰信号存在下优于常规的二进制通信系统。
PN序列发生器 p(n) 正弦信号发生器 i(n) 二进制数据 发生器 s(n) ω(n) 噪声发生器 输出 检测器和差错记数器 p(n) PN序列发生器 要求:模拟通信系统,说明一个PN扩频信号在抑制正弦干扰中的有效性。
二:实验原理
随机生成一个二进制序列,使其在信道中传输时受一加性噪声和一正弦信号的干扰,计算误码率.再加入+1、-1的PN序列计算误码率,比较加入PN序列与不加PN序列的差错率曲线的差别. 根据差错率可以证明PN扩频系统是否有利于通信系统中正弦干扰信号的抑制。
三:实验目的
1. 通过模拟一个通信系统,说明一个PN扩频信号在抑制正弦干扰中的有效性。 2. 学习使用matlab来进行编程。
五:程序框图
六:源程序
主程序:
A1=60; M1=50; A2=150; M2=100;
A3=600; M3=500;
A4=1050;
M4=1000;
w0=1; %正弦信号的中心角频率 SNRindB=0:1:20;
for i=1:length(SNRindB) %横轴为信噪比 间隔为1db err_prb1(i)=s1s(SNRindB(i),M1,A1,w0); %加了pn序列的 err_prb2(i)=s1s(SNRindB(i),M2,A2,w0); err_prb3(i)=s1s(SNRindB(i),M3,A3,w0); err_prb4(i)=s1s(SNRindB(i),M4,A4,w0); end
SNRindB=0:1:20;
for i=1:length(SNRindB)
err_prb5(i)=sm(SNRindB(i),M1,A1,w0); %没有加pn序列的 err_prb6(i)=sm(SNRindB(i),M2,A2,w0); err_prb7(i)=sm(SNRindB(i),M3,A3,w0);
err_prb8(i)=sm(SNRindB(i),M4,A4,w0); end
figure(1);
plot(SNRindB,err_prb1,'-bo',SNRindB,err_prb2, '-gx',SNRindB,err_prb3, '-r+',SNRindB,err_prb4, '-k*'); grid on;
xlabel('SNRindB'); ylabel('BERindB');
legend('M为50时的曲线','M为100时的曲线','M为500时的曲线','M为1000时的曲线'); figure(2);
plot(SNRindB,err_prb5,'-bo',SNRindB,err_prb6, '-gx',SNRindB,err_prb7, '-r+',SNRindB,err_prb8, '-k*'); grid on;
xlabel('SNRindB'); ylabel('BERindB');
legend('M为50时的曲线','M为100时的曲线','M为500时的曲线','M为1000时的曲线'); 有PN的子程序:
function [p]=s1s(snr_in_dB,M,A,w0) %传入的信噪比是db形式的 snr=10^(snr_in_dB/10); %将db换为比值 E=200; %信号幅度 sgma=E/sqrt(2*snr); %噪声标准差
E_chip=E^2/M; %每一样本含有的能量 N=200; %二进制序列长度 numoferr=0.0; %误码率初值 for i=1:N
rand('state',sum(100*clock)); %初始化
temp=rand; %自动生成随机数列 if temp<0.5
data=-1; %进行处理让随机数变换成 -1 和1 的二进制序列 else
data=1; end
for j=1:M %每一个随机数复制M份 形成同一数字的二进制序列
repeated_data(j)=data; end
rand('state',sum(100*clock)); for j=1:M
temp=rand;
if temp<0.5 %生成pn序列 长度为M pn(j)=-1; else
pn(j)=1; end end
trans_sig=sqrt(E_chip)*repeated_data.*pn; %二进制序列经过pn序列发生器 noise=sgma*randn(1,M); %生成噪声 n=1:M;
in=A*sin(w0*n); %正弦信号
rec_sig=trans_sig+noise+in; %正弦 、噪声 、 经过pn序列处理的二进制信号 三者 叠加
temp=rec_sig.*pn; decision=sum(temp);
if decision<0 dicis=-1; else
dicis=1; end
if dicis~=data numoferr=numoferr+1; end end
p=numoferr/N; 没有PN的子程序:
function [p]=sm(snr_in_dB,M,A,w0) snr=10^(snr_in_dB/10); E=200;
E_chip=E^2/M;
sgma=E/sqrt(snr); N=200; numoferr=0; for i=1:N
rand('state',sum(100*clock)); temp=rand; if temp<0.5 data=-1; else
data=1; end
for j=1:M repeated_data(j)=data; end
trans_sig=sqrt(E_chip)*repeated_data; noise=sgma*randn(1,M);
%再次经过pn序列进行解码 %统计每一个M样本 %判断解码值是否等于原二进制数值 %统计误码数 %误码数除以总码元数就为误码率
n=1:M; in=A*sin(w0*n);
xn=trans_sig+noise+in;
decision=sum(xn);
if decision<0 dicis=-1; else
dicis=1; end
if dicis~=data numoferr=numoferr+1; end end
p=numoferr/N;
七:实验结果
一:实验题目: 设有一个序列x(n):x(n)=n/5,0≤n≤50;x(n)=20-n/5,50 二:实验目的 1. 学习并掌握重叠保留法, 会用重叠保留法计算线性卷积。 2. 学习并掌握重叠相加法, 会用重叠相加法计算线性卷积。 3. 复习快速卷积法,掌握其原理,并用快速卷积法计算线性卷积。 4. 体会三种方法的优劣,会选用适当的方法快速准确的计算线性卷积 三:实验原理: 3.1重叠保留法原理(适于N 》》M的情况): 假设将序列x(n)分成多段N点序列,滤波器的脉冲响应为M点序列,M《N。用输入段和脉冲响应之间的N 点循环卷积产生该段的输出序列。由上面的结论,可知其中前(M-1)个样本不是正确的输出值。若将x(n)简单的分成互不重叠的各段,则输出的序列 会有不正确的样本区间存在。为纠正这个问题,使X(n)分成相互重叠(M-1)个样本的许多段,在卷积的结果中抛弃前面(M-1)个样本,保留后面的(N-M+1)个输出样本,最后将输出的结果连成一个序列。为了修正第一段中的前(M-1)个样本,将第一段的前(M-1)个样本置零。 3.2重叠相加法原理: 将输入序列X()分为互不重叠长度为N 的K段,每段分别与长度为M脉冲响应H(n)按N+M-1的长度做循环卷积,这样所得的K个输出段Y()的长度都是N+M-1。各段的长度大于间隔,所以各段之间有M-1个重叠的样本,把着K个输出段相加时把重叠的样本叠加在一起就形成了最终的的输出。 3.3快速卷积法原理: 先计算出卷积的长度L,把长度为N输入信号x(n)前面补L-N个0和长度为M的系统函数h(n)前面补L-M个0,然后在对x(n)和h(n)分别作L点DFT变换,再把H(K)和X(K)相乘,最后再作离散傅立叶反变换得到快速卷积的输出y(n). 四:实验步骤简述 1. 编写重叠保留法和重叠相加法的子程序。 2. 对定义主程序中应用的变量,并初始化。编写输入函数x(n)和系统函数h(n),并输出 其图形 3. 调用子程序实现重叠保留算法和重叠相加算法,计算输入函数x(n)和系统函数h(n)的 线性卷积,并输出结果函数的波形。 五:程序框图 六:源程序 /*重叠保留法的子程序:*/ function[y]=hsolpsav(x,h,N) %High-speed Overlap-Save method of block convolution using FFT %[y]=hsolpsav(x,h,N) %y=output sequence %x=input sequence %h=impulse response %N=block length (must be a power of two) N=2.^(floor(log10(N)/log10(2))) Lenx=length(x) M=length(h);M1=M-1;L=N-M1;h=fft(h,N) x=[zeros(1,M1),x,zeros(1,N-1)] K=floor((Lenx+M1-1)/(L)) %munbers of blocks Y=zeros(K+1,N) for k=0:K xk=fft(x(k*L+1:k*L+N)) Y(k+1,:)=real(ifft(xk.*h)) end Y=Y(:,M:N)' y=(Y(:))' /*重叠相加法的子程序:*/ function[y]=ovrlpadd(x,h,N) %Overlap-Add method of blllock convolution %[y]=ovrlpadd(x,h,N) %y=output sequence %x=input sequence %h=impulse response %N=block length>=2*length(h)-1 Lenx=length(x) M=length(h) Block_Nums=floor((Lenx)/(N)) x=[x,zeros(1,(Block_Nums+1)*N-Lenx)] Y=zeros(Block_Nums+1,N+M-1) for k=0:Block_Nums xk=x(k*N+1:k*N+N) Y(k+1,:)=conv(xk,h) end for k=1:Block_Nums for m=1:M-1 Y(k+1,m)=Y(k+1,m)+Y(k,m+N-1) end end XY=Y(1:Block_Nums,1:N)' yy=Y(Block_Nums+1,:) y=[(XY(:))',yy] y=y(1:Lenx+M-1) %主程序: close all clear all N=4 n=0:50; xn1=n/5 n=51:99; xn2=20-n/5 xn=[xn1 xn2] n=0:99 figure(1) stem(n,xn) xlabel('n');ylabel('x(n)'); /*'输入信号x(n)*/ h=[1 0.5 0.25] n=0:2 figure(2) stem(n,h) xlabel('n');ylabel('h(n)');/*系统函数信号h(n)*/ M=length(xn) L=length(h)+M-1 xe=fft(xn,L) he=fft(h,L) y1=ifft(xe.*he) y2=hsolpsav(xn,h,N) y3=ovrlpadd(xn,h,N) figure(3) stem(y1) xlabel('n');ylabel('y1');/*'快速卷积后的输出y1*/ figure(4) stem(y2) xlabel('n');ylabel('h(n)');/*用重叠保留法后的输出y2*/ figure(5) stem(y3) xlabel('n');ylabel('h(n)');/*运用重叠相加法后的输出y3*/ 七:程序结果及图表 (1)输入信号x(n) (2)系统函数信号h(n) (3)快速卷积后的输出y1 (4)运用重叠保留法后的输出y2 (5)运用重叠相加法后的输出y3 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- 69lv.com 版权所有 湘ICP备2023021910号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务