视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
CDMA通信系统综合仿真实验报告
2025-10-04 22:07:53 责编:小OO
文档
《信息处理综合实验》实验报告(十六)

班级:x’x

姓名:x’x

学号:x’x

日期:x’x实验十六 CDMA通信系统综合仿真

一、实验目的

1. 了解多址技术,扩频技术及CDMA相关通信原理知识。

2. 理解和掌握CDMA通信系统工作理论。

3. 完成CDMA通信系统的设计,并利用Matlab开展仿真分析。

4. 熟悉Matlab及simulink的使用。

2、实验内容

1. 根据CDMA通信系统工作的原理(即扩频通信原理)如下图1,理解和掌握CDMA通信系统整个通信过程。

2. 根据CDMA通信系统工作的原理编写matlab程序,并简要讲述程序流程,用图片记录(显示)整个通信过程。

3. 根据CDMA通信系统工作的原理及程序流程用simulink进行仿真,记录仿真结果。

图1 扩频通信的工作原理

三、实验结果

1. 程序流程

2. 仿真过程记录

图2 初始用户传递信息

图3 用户信息扩频后

图4 基带信号

图5 解扩后信号

误码率:由于在设计中只考虑到加性高斯信道所带来的干扰,最终三个信息的

误码率几乎均为0,这里不再作展示。

3. Simulink仿真过程记录。

图 6 simulink仿真图

图7 初始信号1和初始信号2

图8 扩频后的信号1和信号2

图9 基带信号

图10 解扩后的信号1和信号2

四、实验结论

对于本次实验以及仿真而言,基本完成了实验目的和内容的要求,通过用MATLAB对DS-CDMA系统的仿真调试、结果分析,让我熟悉了DS-CDMA的工作原理,加深了对扩频通信的认识。通过仿真结果中波形的直观方式,让我更清晰的认识到CDMA通信系统的工作方式。但是在设计中只考虑到加性高斯白噪声所带来的干扰,所以误码率计算的结果为0然而在实际通信信道及干扰是复杂多变的,存在着各种各样的情况,仿真实验中最后的信号是在很简单的干扰下(基本没有干扰)得出。要想应用于实际中,必须加入各种噪声来考虑,以实现真实系统的设计。即使如此,在本次设计的整个过程中,以上的结果已经令我受益匪浅。通信系统的性能分析和仿真,随着通信技术、信息技术和计算机技术的发展以及网络系统的大量应用,显得越来越重要。

五、程序

%主程序

clear all;

format long;

N = 8; %设置沃尔什-哈达玛序列阶数,可供2^n个用户使用。x_num = 50; %设置传输信息长度

UserCode = hadamard(N); %生成沃尔什-哈达玛序列

x1 = bingen(x_num); %随机生成用户1要发送的信号(子函数见下面)

c1 = UserCode(4,:); %取出哈达玛矩阵第4行作为用户1的识别码

y1 = ds_mod(c1(:),x1); %对用户1的信号进行ds扩频

x2 = bingen(x_num); %随机生成用户2要发送的信号

c2 = UserCode(2,:); %取出哈达玛矩阵第2行作为用户2的识别码

y2 = ds_mod(c2(:),x2); %对用户2的信号进行ds扩频

x3 = bingen(x_num); %随机生成用户3要发送的信号

c3 = UserCode(3,:); %取出哈达玛矩阵第3行作为用户3的识别码

y3 = ds_mod(c3(:),x3); %对用户3的信号进行ds扩频

x4 = bingen(x_num); %随机生成用户4要发送的信号

c4 = UserCode(6,:); %取出哈达玛矩阵第4行作为用户4的识别码

y4 = ds_mod(c4(:),x4); %对用户4的信号进行ds扩频

y = y1+y2+y3+y4; %把四路信号加在一起形成基带信号

figure(1),

subplot(4,1,1);plot(x1);title('信号1');

subplot(4,1,2);plot(x2);title('信号2');

subplot(4,1,3);plot(x3);title('信号3');

subplot(4,1,4);plot(x4);title('信号4');

figure(2),

subplot(4,1,1);plot(y1);title('信号1扩频后');

subplot(4,1,2);plot(y2);title('信号2扩频后');

subplot(4,1,3);plot(y3);title('信号3扩频后');

subplot(4,1,4);plot(y4);title('信号4扩频后');

z = awgn(y,1); %加入高斯白噪声

figure(3),

subplot(2,1,1);plot(y);title('混合后的基带信号');

subplot(2,1,2);plot(z);title('加入高斯白噪声后的基带信号');

x1_de = ds_demod(c1(:),z); %使用用户1的识别码对加入噪声的基带信号进行解扩x1_de(find(x1_de < 0)) = -1; %(解扩子函数见下面)

x1_de(find(x1_de >=0)) = 1; %对解扩后的信号进行判决,从而恢复出用户1的信号x2_de = ds_demod(c2(:),z); %以下同上

x2_de(find(x2_de < 0)) = -1;

x2_de(find(x2_de >=0)) = 1;

x3_de = ds_demod(c3(:),z);

x3_de(find(x3_de < 0)) = -1;

x3_de(find(x3_de >=0)) = 1;

x4_de = ds_demod(c4(:),z);x4_de(find(x4_de < 0)) = -1;

x4_de(find(x4_de >=0)) = 1;

figure(4),

subplot(4,1,1);plot(x1_de);title('解扩后信号1');

subplot(4,1,2);plot(x2_de);title('解扩后信号2');

subplot(4,1,3);plot(x3_de);title('解扩后信号3');

subplot(4,1,4);plot(x4_de);title('解扩后信号4')

[number1,ratio1] = symerr(x1,x1_de);

[number2,ratio2] = symerr(x2,x2_de);

[number3,ratio3] = symerr(x3,x3_de);

[number4,ratio4] = symerr(x4,x4_de);

scatterplot(ratio1);title('误码率');

scatterplot(ratio2);title('误码率');

scatterplot(ratio3);title('误码率');

scatterplot(ratio4);title('误码率');

子函数:

%生成沃尔什-哈达玛序列

function H = hadamard(n,classname)

if nargin < 2

classname = 'double';

end

if isstring(classname) && isscalar(classname)

classname = char(classname);

end

[f,e] = log2([n n/12 n/20]);

k = find(f==1/2 & e>0);

if min(size(n)) > 1 || isempty(k)

error(message('MATLAB:hadamard:InvalidInput'));

end

e = e(k)-1;

if k == 1 % N = 1 * 2^e;

H = ones(classname);

elseif k == 2 % N = 12 * 2^e;

H = [ones(1,12,classname); ones(11,1,classname) ...

toeplitz([-1 -1 1 -1 -1 -1 1 1 1 -1 1],[-1 1 -1 1 1 1 -1 -1 -1 1 -1])]; elseif k == 3 % N = 20 * 2^e;

H = [ones(1,20,classname); ones(19,1,classname) ...

hankel([-1 -1 1 1 -1 -1 -1 -1 1 -1 1 -1 1 1 1 1 -1 -1 1], ...

[1 -1 -1 1 1 -1 -1 -1 -1 1 -1 1 -1 1 1 1 1 -1 -1])];

end

% Kronecker product construction.

for i = 1:e

H = [H H H -H]; %#ok

end%随机生成信号子函数

function x = bingen(L)

x = rand(1,L);

x(find(x<0.5)) = -1;

x(find(x >=0.5)) = 1;

%扩频子函数

function y = ds_mod(c,x)

tmp = c*x;

y = tmp(:);

%解扩子函数

function x = ds_demod(c,y)

tmp = reshape(y, length(c), length(y)/length(c)); tmp = tmp';

x = tmp * c;

x = x';下载本文

显示全文
专题