继续给出程序中相关函数的内容,已经给出了M序列生成函数以及QPSK调制和解调的函数。

这次给出扩频部分的函数。

function [iout, qout] = spread(idata, qdata, code1)

% *********************************************

%   idata   : ich data sequcence

%   qdata   : qch data sequcence

%   iout    : ich output data sequence

%   qout    : qch output data sequence

%   code1    : spread code sequence

% *********************************************

switch nargin

case { 0 , 1 }

error('lack of input argument');

code1 = qdata;

qdata = idata;

[hn,vn] = size(idata);

[hc,vc] = size(code1);

if hn > hc

error('lack of spread code sequences');

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);

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

函数完成扩频码和信源相乘的过程。

function [outregi] = shift(inregi,shiftr,shiftu)

% ***********************************************

% inrege     : Vector or matrix

% shiftr     : The amount of shift to the right.

% shiftu     : The amount of shift to the top.

% outregi    : Register output

% *********************************************

[h, v]  = size(inregi);

outregi = inregi;

shiftr = rem(shiftr,v);

shiftu = rem(shiftu,h);

if shiftr > 0

outregi(:,1       :shiftr) = inregi(:,v-shiftr+1:v       );

outregi(:,1+shiftr:v     ) = inregi(:,1         :v-shiftr);

elseif shiftr < 0

outregi(:,1         :v+shiftr) = inregi(:,1-shiftr:v      );

outregi(:,v+shiftr+1:v       ) = inregi(:,1       :-shiftr);

inregi = outregi;

if shiftu > 0

outregi(1         :h-shiftu,:) = inregi(1+shiftu:h,     :);

outregi(h-shiftu+1:h,       :) = inregi(1       :shiftu,:);

elseif shiftu < 0

outregi(1       :-shiftu,:) = inregi(h+shiftu+1:h,       :);

outregi(1-shiftu:h,      :) = inregi(1         :h+shiftu,:);

至此函数都已经给出,

赶快去运行程序吧。

看看不加噪声的情况下,

误码率是不是为0?

未完,待续!

修订记录

介绍使用matlab仿真工具和其各种类型的算法,讲解高校涉及matlab的相关课程,免费提供通信类、导航类的产品级物理层算法、数据统计分析算法、图像处理算法、AI算法。义务为各高校的MATLAB学习社团和生物医学领域的科研人员做技术支持。

值得您关注!

希望同学们转发并且宣传,本人只会实实在在的教书育人。

算法工匠

讲解高校电子及通信相关专业的课程,交流人文历史及教育心得,介绍和推广信号处理算法、通信算法和大数据算法。帮助学生了解信号处理和通信涉及的仿真知识并介绍算法在实际工作中的运用。提供matlab仿真程序供交流使用。大数据算法侧重生物医学领域,义务帮助医务人员进行数据统计分析。

如果你觉得我是努力教学的老师,愿意看我的文章,愿意和我分享您的经验和建议,请扫描公众号的二维码,关注我。

介绍和推广matlab仿真的文章及源代码,介绍和共享相关资料。为各高校和研究机构的MATLAB学习爱好者提供技术支持,义务为生物医学领域的科研人员做数据分析。