毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 论文 >> 正文

matlab数字通信系统仿真研究 第3页

更新时间:2010-4-15:  来源:毕业论文
matlab数字通信系统仿真研究 第3页
for n=1:length(bits)
 x=[x eval(strcat('signal',bits(n)))]; % 0/1 二进制
 xcolor = [xcolor eval(strcat('color',bits(n)))];
% disp(x);
% disp(xcolor)
end
% Send signal through white noise channel
r=x
%r = x + noise_amp*randn(1,length(x));  %信道噪声

% Run matched filters,利用匹配滤波器进行解调
y1=filter(signal1(N:-1:1),1,r);
%求通过滤波器的信号
y0=filter(signal0(N:-1:1),1,r);

% Graphics
subplot(211)
t=[0:length(r)-1];
plot(t,r,'k');hold on
a = axis;
xp=x*(0.75*max(abs([a(3) a(4)])/max(x)));
for n=1:length(bits)
 plot(t((n-1)*N+1:n*N),xp((n-1)*N+1:n*N),[xcolor(n) '--']);
 h = text((n-1)*N+N/2,max(xp),bits(n));
 set(h,'fontsize',16);set(h,'color',xcolor(n));
end
%for n=N*[1:length(bits)],h=line([n n],a(3:4));set(h,'linestyle','--');end
h=title('Received signal');set(h,'fontsize',18);
hold off

subplot(212)
plot(t,y0,color0,t,y1,color1)
a = axis;
for n=1:length(bits)
 if y1(n*N)>= y0(n*N)
  h = text(n*N-10,.75*a(4),'1');
  set(h,'fontsize',16);set(h,'color',color1);
  if bits(n) == '0'
   set(h,'fontweight','bold');
  end
 else
  h = text(n*N-10,.75*a(4),'0');
  set(h,'fontsize',16);set(h,'color',color0);
  if bits(n) == '1'
   set(h,'fontweight','bold');
  end
 end
end
for n=N*[1:length(bits)],h=line([n n],a(3:4));set(h,'linestyle','--');end
h=title('Matched Filter Output');set(h,'fontsize',18);
%figure2是接收端的误码率
% Compute Pr[e] curves 计算误码率
%
figure(2)
snrdb = [-10:.5:12];
snr = 10.^(snrdb/10);
p_bpsk = Qfunct(sqrt(2*snr));
%需要编写Q函数 Qfunct()
p_fsk = Qfunct(sqrt(snr));
h=semilogy(snrdb,p_bpsk,snrdb,p_fsk,'r--');grid;axis([-10 12 10^(-8) 1])
set(gca,'fontsize',18);
h=xlabel('Signal-to-Noise Ratio (dB)');set(h,'fontsize',18);
h=ylabel('Bit Error Probability');set(h,'fontsize',18);
legend('BPSK','FSK'); 
(3)需要的小函数
function [y]=Qfunct(x)
%Q函数,在接收端求误码率时使用
y=1/2 *erfc(x/sqrt(2));
%max_bound=1000;
%fun=inline('1/sqrt(2*pi)*exp(-x.^2/2)');
%Q__return_value=quad(fun,alpha,max_bound);
(4)QAM
clear;
Fd=10;    %消息序列的采样速率
Fs=3*Fd;   %已调纤毫的采样速率
M=16;  
SNR_db=0:12;    %仿真信噪比范围
SNR1_db=0:0.1:12;    %理论计算信噪比范围
for n=1:length(SNR_db)
    Eb_N0=10^(SNR_db(n)/10);
    sgma=sqrt(5/(4*Eb_N0));     %nc、ns的均方差
    x=randint(10000,1,M);      %产生随即消息序列
    y=dmodce(x,Fd,Fs,'qask',M);     %QAM调制
    ynoise=y+sqrt(Fs/Fd)*sgma*(randn(length(y),1)+j*randn(length(y),1));   %加入噪声
    z=ddemodce(ynoise,Fd,Fs,'qask',M);     %解调
    [numbers,pe(n)]=symerr(x,z);     %计算误符号率
end;
for m=1:length(SNR1_db)     %计算理论误码率
    Eb_N0=10^(SNR1_db(m)/10);
    sq_M=sqrt(M);
    temp=Qfunct(sqrt(Eb_N0*(3*(log2(M)))/(M-1)));
    pe_theory(m)=1-(1-(2*(sq_M-1)*temp)/sq_M)^2;
end
semilogy(SNR_db,pe,'*',SNR1_db,pe_theory);      %作出图象
xlabel('信噪比(dB)');
ylabel('误码率(Pe)');
legend('仿真得到的误符号率','理论符号误码曲线');
(5)编译过程中出现的问题
a. 对MATLAB的函数不熟悉,要想用某个函数的时候还要在书中查找函数,这样降低了整个编译过程的效率。
b. 在编译完成后的运行中,系统总是报错,然后才慢慢根据错误改正代码,这样也减慢了编译的效率,这些都是存在的问题,以后要仔细,避免一些低级的错误的出现。
4. 运行结果及分析(1)FSK

上一页  [1] [2] [3] [4] 下一页

matlab数字通信系统仿真研究 第3页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©751com.cn 辣文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。