基于MATLAB的扩频通信系统仿真毕业论文 联系客服

发布时间 : 星期三 文章基于MATLAB的扩频通信系统仿真毕业论文更新完毕开始阅读a0cd7397ff00bed5b9f31da6

黄河科技学院毕业论文 第

end

iout((1:para),jj)=isi; qout((1:para),jj)=isq; count2=count2+ml;

26 页

end

扩频部分

function [iout, qout] = spread(idata, qdata, code1) %变量含义说明

% idata 输入序列实部 % qdata 输入序列虚部 % iout 输出序列实部 % qout 输出序列虚部 % code1 扩频码序列 switch nargin case { 0 , 1 }

error('lack of input argument'); case 2

code1 = qdata; qdata = idata; end

[hn,vn] = size(idata); [hc,vc] = size(code1); if hn > hc

error('lack of spread code sequences'); end

iout = zeros(hn,vn*vc); qout = zeros(hn,vn*vc); for ii=1:hn

iout(ii,:) = reshape(rot90(code1(ii,:),3)*idata(ii,:),1,vn*vc);

黄河科技学院毕业论文 第

end

信道仿真部分

27 页

qout(ii,:) = reshape(rot90(code1(ii,:),3)*qdata(ii,:),1,vn*vc);

实现高斯白噪声代码函数

function [iout, qout] = comb2(idata, qdata, attn)

%各变量含义说明 % idata 输入序列实部 % qdata 输入序列虚部 % iout 输出序列实部 % qout 输出序列虚部

% attn 根据信噪比得到的信号衰减水平

v = length(idata); h = length(attn);

iout = zeros(h,v); qout = zeros(h,v); for ii=1:h

iout(ii,:) = idata + randn(1,v) * attn(ii); qout(ii,:) = qdata + randn(1,v) * attn(ii); end

黄河科技学院毕业论文 第

28 页

接收机的解扩部分函数

function [iout, qout] = despread(idata, qdata, code1) %各变量含义说明

% idata 输入序列实部 % qdata 输入序列虚部 % iout 输出序列实部 % qout 输出序列虚部 % code1 扩频码序列

switch nargin case { 0 , 1 }

error('lack of input argument'); case 2

code1 = qdata; qdata = idata; end

[hn,vn] = size(idata); [hc,vc] = size(code1);

vn = fix(vn/vc);

iout = zeros(hc,vn); qout = zeros(hc,vn);

for ii=1:hc iout(ii,:)

rot90(flipud(rot90(reshape(idata(ii,:),vc,vn)))*rot90(code1(ii,:),3));

=

黄河科技学院毕业论文 第

qout(ii,:)

rot90(flipud(rot90(reshape(qdata(ii,:),vc,vn)))*rot90(code1(ii,:),3));

end

接收机解调部分的函数

29 页

=

function [demodata]=qpskdemod(idata,qdata,para,nd,ml) %各变量含义说明

% idata 输入数据的实部 % qdata 输入数据的虚部 % demodata 解调后的数据 % para 并行的信道数 % nd 输入数据个数 % ml 调制阶数 demodata=zeros(para,ml*nd);

demodata((1:para),(1:ml:ml*nd-1))=idata((1:para),(1:nd))>=0; demodata((1:para),(2:ml:ml*nd))=qdata((1:para),(1:nd))>=0;

%误码率分析

noe2 = sum(sum(abs(data-demodata))); nod2 = user * nd * ml; noe = noe + noe2; nod = nod + nod2;

% fprintf('%d\\t%e\\n',ii,noe2/nod2); end

%数据文件 ber = noe / nod;