新書推薦:
《
自我囚禁的人:完美主义的心理成因与自我松绑(破除你对完美主义的迷思,尝试打破自我评价过低与焦虑的恶性循环)
》
售價:HK$
67.9
《
周易
》
售價:HK$
45.8
《
东南亚的传统与发展
》
售價:HK$
69.0
《
乾隆制造
》
售價:HK$
87.4
《
资治通鉴臣光曰辑存 资治通鉴目录(司马光全集)(全二册)
》
售價:HK$
296.7
《
明代社会变迁时期生活质量研究
》
售價:HK$
308.2
《
律令国家与隋唐文明
》
售價:HK$
74.8
《
紫云村(史杰鹏笔下大唐小吏的生死逃亡,新历史主义小说见微之作,附赠5张与小说内容高度契合的宣纸彩插)
》
售價:HK$
101.2
|
編輯推薦: |
本书是精通MATLAB丛书之一,全书基于MATLAB R2016a平台,从需要、实用的角度出发,介绍了智能计算的方法,并在讲解各实现方法中给出相应的实例,使得本书应用性更强,实用价值更高。本书提供所有程序源代码。精通MATLAB相关书目如下:(1)MATLAB 8.X实战指南(2)数字图像处理高级应用基于MATLAB和CUDA的实现(第2版)(3)MATLAB通信系统建模与仿真(4)MATLAB R2015a数字图像处理(5)MATLAB R2015b数学建模(6)MATLAB R2015a小波分析(7)MATLAB R2015b神经网络技术(8)MATLAB R2015b*化计算(9)MATLAB R2015b概率与数理统计(10)MATLAB R2015b数值计算方法(11)MATLAB R2016a智能计算25个案例分析
|
內容簡介: |
本书以MATLAB R2016a为平台,从实用的角度出发,介绍智能计算的方法,并在讲解各实现方法中给出相应的实例,使得本书应用性更强,实用价值更高。 全书共分25章, 通过对25个案例的分析, 介绍MATLAB R2016a在通信系统、电子信息、自动控制系统、小波分析、神经网络、数值积分、微分方程、数据逼近、数据估计与拟合等方面的应用。编写过程中力求系统性、实用性与先进性相结合,理论与实践相交融,使读者通过阅读本书快速掌握MATLAB软件的同时,达到学以致用的效果。 本书可作为通信工程、电子信息与自动控制等专业领域的广大科研人员、学者、工程技术人员和高等院校教师以及在读理工科学生的参考用书。
|
目錄:
|
目录
第1章控制系统案例的MATLAB实现
1.1MATLABSimulink在时域分析中的应用
1.2MATLAB在积分中的应用
1.3MATLAB在微分方程中的应用
1.4MATLABSimulink在根轨迹分析中的应用
1.5MATLAB在频域响应中的应用
1.6MATLABSimulink在状态空间中的应用
1.7MATLAB在PID控制器设计中的应用
1.8MATLAB在导弹系统中的应用
第2章通信系统建模与仿真
2.1数字信号的传输
2.1.1数字信号的基带传输
2.1.2数字信号的载波传输
2.2扩频系统的仿真
2.2.1伪随机码产生
2.2.2序列扩频系统
第3章通信系统接收机设计
3.1利用直接序列扩频技术设计发射机
3.2利用IS95前向链路技术设计接收机
3.3利用OFDM技术设计接收机
3.4通信系统的MATLAB实现
第4章调制与解调信号的MATLAB实现
4.1调制与解调简述
4.2模拟调制与解调
4.2.1模拟线性调制
4.2.2双边带调幅调制
4.2.3单边带调幅调制
4.2.4模拟角度调制
4.2.5脉冲编码调制
第5章神经网络的预测控制
5.1系统辨识
5.2自校正控制
5.2.1单步输出预测
5.2.2最小方差控制
5.2.3最小方差间接自校正控制
5.2.4最小方差直接自校正控制
5.3自适应控制
5.3.1MIT自适应律
5.3.2MIT归一化算法
5.4预测控制
5.4.1基于CARIMA模型的JGPC
5.4.2基于CARMA模型的JGPC
第6章控制系统校正方法的MATALB实现
6.1PID校正
6.1.1PID调节简介
6.1.2PID调节规律介绍
6.1.3PID调节分析介绍
6.2控制系统的根轨迹校正
6.2.1根轨迹的超前校正
6.2.2根轨迹的滞后校正
6.2.3根轨迹的滞后超前校正
6.3控制系统的频率校正
6.3.1频率法的超前校正
6.3.2频率法的滞后校正
第7章通信系统的模型分析
7.1滤波器的模型分析
7.1.1滤波器的类型、参数指标分析
7.1.2滤波器相关函数及模拟
7.1.3滤波器的相关实现
7.2通信系统的基本模型分析
7.2.1模拟通信系统的基本模型分析
7.2.2数字通信系统的基本模型分析
7.3模拟通信系统的建模与仿真分析
7.3.1调幅广播系统的仿真分析
7.3.2调频立体声广播的信号结构
7.3.3彩色电视信号的构成和频谱仿真分析
第8章挠性结构振动控制的应用
8.1挠性结构的概述
8.2挠性结构的主动振动及仿真
8.2.1前滤波
8.2.2后滤波
8.2.3仿真
第9章基于小波的信号突变点检测算法研究
9.1信号的突变性与小波变换
9.2信号的突变点检测原理
9.3实验结果与分析
9.3.1Daubechies 5小波用于检测含有突变点的信号
9.3.2Daubechies 6小波用于检测突变点
第10章小波变换在信号特征检测中的算法研究
10.1小波信号特征检测的理论分析
10.2实验结果与分析
10.2.1突变性检测
10.2.2自相似性检测
10.2.3趋势检测
第11章小波变换图像测试分析
11.1概述
11.2实例说明
11.3输出结果与分析
11.4源程序
11.4.1nstdhaardemo.m
11.4.2thresholdtestdemo.m
11.4.3modetest.m
11.4.4nstdhaardec2.m
11.4.5nstdhaarrec2.m
11.4.6mydwt2.m
11.4.7myidwt2.m
第12章基于小波分析的图像多尺度边缘检测算法研究
12.1多尺度边缘检测
12.2快速多尺度边缘检测算法
12.3实验结果与分析
第13章基于小波的信号阈值去噪算法研究
13.1阈值去噪方法
13.2阈值风险
13.3实验结果与分析
第14章基于MATLAB的小波快速算法设计
14.1小波快速算法设计原理与步骤
14.2小波分解算法
14.3对称小波分解算法
14.4小波重构算法
14.5对称小波重构算法
14.6MATLAB程序设计实现
第15章小波变换检测故障信号与小波类型的选择
15.1故障信号检测的理论分析
15.2实验结果与分析
15.2.1利用小波分析检测传感器故障
15.2.2小波类型的选择对于检测突变信号的影响
15.3小波类型选择
第16章基于小波图像压缩技术的算法研究
16.1图像的小波分解算法
16.2小波变换系数分析
16.3实验结果与分析
第17章数字图像水印技术的实现
17.1数字图像水印技术概述
17.1.1数字水印分类
17.1.2数字图像水印技术应用领域
17.1.3数字水印技术特点
17.2数字图像水印技术的实现
第18章计算机硬盘读写磁头位置控制器设计
18.1硬盘读写磁头的数学模型
18.2模型离散化及性能分析
18.2.1离散模型的性能分析
18.2.2离散模型的极点
18.2.3离散模型的根轨迹
18.3附加超前校正装置及性能分析
18.4闭环控制系统设计与性能分析
第19章径向基函数神经网络模型与学习算法
19.1RBF神经网络模型
19.2RBF网络的学习算法
19.3径向基网络的神经网络函数
19.3.1神经网络的创建函数
19.3.2转换函数
19.3.3传递函数
19.4径向基函数的网络应用实例
19.4.1函数逼近
19.4.2散布常数对径向基函数网络设计的影响
19.5应用PNN进行变量分类
19.5.1问题的提出
19.5.2网络设计
19.5.3网络测试
19.6应用GRNN进行函数逼近
19.6.1问题的提出
19.6.2网络设计
19.6.3网络测试
第20章倒立摆控制的设计
20.1倒立摆数学模型
20.1.1微分方程模型
20.1.2传递函数模型
20.1.3状态空间数学模型
20.2开环响应
20.2.1传递函数
20.2.2状态空间法
20.3PID控制算法的MATLAB实现
第21章小波在图像压缩、增强、平滑和融合中的应用
21.1小波变换基础
21.1.1连续小波变换
21.1.2离散小波
21.1.3二进小波变换
21.1.4MATLAB中小波函数工具箱
21.2小波分析在图像增强中应用
21.3基于小波的图像降噪和压缩
21.3.1小波的图像压缩技术
21.3.2小波的图像降噪技术
21.4小波的融合技术
21.5小波包在图像边缘检测中应用
21.6小波包与图像消噪
第22章数据分析的MATLAB实现
22.1多元方差分析
22.1.1理论介绍
22.1.2函数介绍
22.1.3应用示例的分析
22.2判别分析
22.2.1概述
22.2.2马氏距离
22.2.3多图像平均法
22.3实验设计分析
22.3.1基本理论
22.3.2函数介绍
22.3.3应用示例的分析
22.4聚类分析
22.4.1理论介绍
22.4.2函数介绍
22.4.3应用示例分析
第23章多元统计分析MATALB实现
23.1因素分析
23.1.1理论介绍
23.1.2函数介绍
23.1.3应用示例分析
23.2正交实验设计分析
23.2.1正交表分析
23.2.2不考虑交互作用正交实验设计的基本程序分析
23.2.3应用示例的分析
23.3示范程序
23.3.1aoctool函数演示程序
23.3.2disttool函数演示程序
23.3.3polytool函数演示程序
23.3.4randtool函数演示程序
23.3.5robustdemo函数演示程序
23.3.6rsmdemo函数演示程序
第24章数值计算的MATLAB实现
24.1矩阵代数的应用
24.2数学建模的应用
24.3优化设计的应用
24.4拟合分析的应用
24.5非线性方程的应用
24.6数值模型的应用
24.7美丽的分形图
24.8共线平动点
第25章提升小波及其应用
25.1提升小波算法
25.2MATLAB提升小波变换函数
25.2.1提升方案函数
25.2.2双正交四联滤波器
25.2.3正交及懒小波
25.2.4提升小波变换和反变换
25.2.5劳伦多项式和矩阵
25.3提升小波的应用
25.3.1提升小波在信号处理中的应用
25.3.2提升小波在图像中的应用
附录MATLAB R2016a安装说明
参考文献
|
內容試閱:
|
前言
智能计算是一种经验化的计算机思考性程序,是人工智能化体系的一个分支,是辅助人类去处理各种问题的具有独立思考能力的系统。智能计算就是借用自然界、生物界的规律根据其原理模仿设计求解问题的算法。智能计算包括遗传算法、模拟退火算法、禁忌搜索算法、进化算法、启发式算法、蚁群算法、人工鱼群算法,粒子群算法、混合智能算法、免疫算法、人工智能、神经网络、机器学习、生物计算、DNA计算、量子计算、智能计算与优化、模糊逻辑、模式识别、知识发现、数据挖掘等。这些方法具有以下共同的要素: 自适应的结构、随机产生或指定的初始状态、适应度的评测函数、修改结构的操作、系统状态存储器、终止计算的条件、指示结果的方法、控制过程的参数。智能计算的这些方法具有自学习、自组织、自适应的特征和简单、通用、鲁棒性强、适于并行处理的优点。在并行搜索、联想记忆、模式识别、知识自动获取等方面得到了广泛的应用。人工智能和智能计算完全是两个概念。图灵奖获得者约翰霍普克罗夫特说,计算和通信两个领域的融合开创了智能计算的新天地。现在计算机已经可以更聪明地帮助人们获得和处理信息,这已经和人工智能的概念大相径庭了。智能计算技术在自身性能的提高和应用范围的拓展中不断完善。在智能计算的研究、发展与应用上,无论是研究队伍的规模、发表的论文数量,还是网上的信息资源,发展速度都很快,在优化计算、模式识别、图像处理、自动控制、经济管理、机械工程、电气工程、通信网络和生物医学等多个领域取得了成功的应用,应用领域涉及国防、科技、经济、工业和农业等各个方面。MATLAB是一个包含大量计算算法的集合。其拥有600多个工程中要用到的数学运算函数,可以方便地实现用户所需的各种计算功能。函数中所使用的算法都是科研和工程计算中的最新研究成果,并且经过了各种优化和容错处理。在通常情况下,可以用它来代替底层编程语言,如C和C 。在计算要求相同的情况下,使用MATLAB的编程工作量会大大减少。MATLAB的这些函数集涉及最简单最基本的函数到诸如矩阵、特征向量、快速傅立叶变换等复杂函数。函数所能解决的问题大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅里叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数学运算、多维数组操作以及建模动态仿真等。Simulink是MATLAB的一个工具包,其建模与一般程序建模相比更为直观,操作也更为简单,不必记忆各种参数、命令的用法,只要用鼠标就能够完成非常复杂的工作。Simulink不但支持线性系统仿真,还支持非线性系统仿真,既支持连续系统仿真,又支持离散系统甚至混合系统仿真。本书以MATLAB R2016a为平台,主要介绍神经网络算法、小波分析算法、PID控制算法、聚类分析算法、优化设计算法、自适应控制算法、预测控制算法等内容。书中结合各种实际算法的实例,详细介绍通过MATLAB进行算法分析、设计的方法与过程。本书具有以下特点:(1) 版本新,函数新MATLAB每年更新两次,工具箱也随之更新换代,许多旧的函数已经废弃不用,同时又有新的函数补充进来,本书基于MATLAB R2016a平台,介绍新版本下工具箱的使用方法。(2) 由浅入深,层次分明本书内容以最优化理论为主线,以最优化方法与实际应用相结合的实例为基础,结合编者的多年教学实践经验,由浅入深地介绍各种理论和方法在MATLAB中的实现方法。(3) 内容讲解不枯燥本书结合相关理论和实践,由实践来支撑理论,通过求解流程以及算法迭代过程,让读者容易理解并且掌握,书中的许多实例是读者经常碰到的,读起来不枯燥。(4) 应用性强该书取材先进实用,讲解深入浅出,各章均有大量用MATLABSimulink实现的仿真实例,便于读者掌握和巩固所学知识。通过本书的学习,读者不仅可以全面掌握MATLAB编程和开发技术,还可以提高快速分析和解决实际问题的能力,从而能够在最短的时间内,以最好的效率解决实际工作中遇到的问题,提升工作效率。本书主要由张德丰编写,此外参加编写的还有栾颖、周品、曾虹雁、邓俊辉、邓秀乾、邓耀隆、高泳崇、李嘉乐、李旭波、梁朗星、梁志成、刘超、刘泳、杨平和许兴杰。本书主要是面向通信工程、电子信息与自动控制方面的广大科研人员、学者、工程技术人员的参考用书,也可作为高等教育的教师、高等院校在读理工学生及相关领域广大科研人员的用书。由于时间仓促,加之作者水平有限,错误和疏漏之处在所难免。在此,恳请各领域的专家和广大读者批评指正。作者2017年1月
第3章通信系统接收机设计
3.1利用直接序列扩频技术设计发射机直接序列扩频通信系统的接收机如图31所示。
图31扩频通信系统接收机框图
1 相干解调数字信号经过两路正交的载波进行下变频之后重新得到基带信号。2 Nyquist滤波该滤波器的作用有两点: ①经过AD变换和下变频的信号含有许多寄生频谱,因而必须用一个低通滤波器予以消除; ②对接收到的信号进行匹配滤波。3 解扩将接收机的信号与本地伪码进行相关运算,以恢复出原始传输数据。4 反映射将解扩后的数据通过符号判决重新对应为星座图上的点,再对应为0和1表示的二进制数据。3.2利用IS95前向链路技术设计接收机接收部分从信道接收信号。经基带滤波、短码解扩、沃尔什解调、解扰、去交织和维特比译码,输出解调后的信号。各通信模块和发射机的相关模块设计类似。3.3利用OFDM技术设计接收机OFDM系统设计的接收机的框图如图32所示。接收机很多通信处理的模块都与发射机的相关模块功能相似,这里不再一一介绍,接收机主要增加了同频模块。
图32OFDM系统接收机框图
3.4通信系统的MATLAB实现下面列出了IS95前向链路系统的MATLAB仿真程序。
%数据速率 = 9600kbps
clear all
global Zi Zq Zs show R Gi Gq
show = 0; SD = 0; %选择软硬判决接收
%主要的仿真参数设置
BitRate = 9600; ChipRate = 1228800;
N = 184; MFType = 1; %匹配滤波器类型升余弦
R = 5;
%Viterbi生成多项式
G_Vit = [1 1 1 1 0 1 0 1 1; 1 0 1 1 1 0 0 0 1];
K = sizeG_Vit, 2;L = sizeG_Vit, 1;
%Walsh矩阵代码
WLen = 64;
Walsh = reshape[1;0]*ones1, WLen2, WLen , 1;
%Walsh = zerosWLen ,1;
%扩频调制PN码的生成多项式
Gi_ind = [15, 13, 9, 8, 7, 5, 0]'';
Gq_ind = [15, 12, 11, 10, 6, 5, 4, 3, 0]'';
Gi = zeros16, 1;
Gi16-Gi_ind = onessizeGi_ind;
Zi = [zeroslengthGi-1, 1; 1];
%I路信道PN码生成器的初始状态
Gq = zeros16, 1;
Gq16-Gq_ind = onessizeGq_ind;
Zq = [zeroslengthGq-1, 1; 1];
%Q路信道PN码生成器的初始状态
%扰码生成多项式
Gs_ind = [42, 35, 33, 31, 27, 26, 25, 22, 21, 19, 18, 17, 16, 10, 7, 6, 5, 3, 2, 1, 0]'';
Gs = zeros43, 1;
Gs43-Gs_ind = onessizeGs_ind;
Zs = [zeroslengthGs-1, 1; 1];
%长序列生成器的初始状态
%AWGN信道
EbEc = 10*log10ChipRateBitRate;
EbEcVit = 10*log10L;
EbNo = [-2 : 0.5 : 6.5]; %仿真信噪比范围dB
%实现主程序
ErrorsB = []; ErrorsC = []; NN = [];
if SD == 1
fprintf''\n SOFT Decision Viterbi Decoder\n\n'';
else
fprintf''\n HARD Decision Viterbi Decoder\n\n'';
end
for i=1:lengthEbNo
fprintf''\nProcessing %1.1f dB'', EbNoi;
iter = 0;ErrB = 0; ErrC = 0;
while ErrB 0;
%速率为19.2kcps
[TxChips, Scrambler] = PacketBuilderTxData, G_Vit, Gs;
%速率为1.2288Mcps
[x PN MF] = ModulatorTxChips, MFType, Walsh;
%实现信道代码
noise = 1sqrt2*sqrtR2* randnsizex j*randnsizex*...
10^-EbNoi - EbEc20;
r = x noise;
%实现接收机代码
RxSD = Demodulatorr, PN, MF, Walsh; %软判决,速率为19.2kcps
RxHD = RxSD0; %定义接收码片的硬判决
if SD
[RxData Metric]= ReceiverSDRxSD, G_Vit, Scrambler;%软判决
else
[RxData Metric]= ReceiverHDRxHD, G_Vit, Scrambler;%硬判决
end
ifshow
subplot311; plotRxSD, ''-o''; title''Soft Decisions'';
subplot312; plotxorTxChips, RxHD, ''-o''; title''Chip Errors'';
subplot313; plotxorTxData, RxData, ''-o'';
title[''Data Bit Errors. Metric = '', num2strMetric];
end
ifmoditer, 50==0
fprintf''.'';
save TempResults ErrB ErrC N iter
end
ErrB = ErrB sumxorRxData, TxData;
ErrC = ErrC sumxorRxHD, TxChips;
iter = iter1;
end
ErrorsB = [ErrorsB; ErrB];
ErrorsC = [ErrorsC; ErrC];
NN = [NN; N*iter];
save SimData *
end
%实现误码率计算
PerrB = ErrorsB.NN; PerrC = ErrorsC.NN;
Pbpsk= 12*erfcsqrt10.^EbNo10;
PcVit= 12*erfcsqrt10.^EbNo-EbEcVit10;
Pc =12*erfcsqrt10.^EbNo-EbEc10;
%实现性能仿真显示代码
figure;
semilogyEbNo1:lengthPerrB, PerrB, ''b-*''; hold on;
xlabel''信噪比dB'';
ylabel''误码率'';
grid on;
运行程序,得到前向链路系统仿真效果图,如图33所示。
图33前向链路系统仿真效果图
在运行程序过程中,调用到以下用户自定义编写的函数,它们的源代码分别如下。
function [ChipsOut, Scrambler] = PacketBuilderDataBits, G, Gs;
%此函数用于产生IS-95前向链路系统的发送数据包
%DataBits为发送数据二进制形式
%G为Viterbi编码生成多项式
%Gs为长序列生成多项式扰码生成多项式
%ChipsOut为输入到调制器的码序列二进制形式
%Scrambler为扰码
global Zs
K = sizeG, 2; L = sizeG, 1;
N = 64*L*lengthDataBits K-1;%码片数 9.6kbps - 1.288 Mbps
chips = VitEncG, [DataBits; zerosK-1,1];%Viterbi编码
%实现交织编码
INTERL = reshapechips, 24, 16;%IN: 列, OUT: 行
chips = reshapeINTERL'', lengthchips, 1; %速率=19.2kbps
%产生扰码
[LongSeq Zs] = PNGenGs, Zs, N;
Scrambler = LongSeq1:64:end;
ChipsOut = xorchips, Scrambler;
function y = VitEncG, x;
%此函数根据生成多项式进行Viterbi编码
%G为生成多项式的矩阵
%x为输入数据二进制形式
%y为Viterbi编码输出序列
K = sizeG, 1; L = lengthx;
yy = conv2G, x''; yy = yy:, 1:L;
y = reshapeyy,K*L, 1; y = mody, 2;
function [y, Z] = PNGenG, Zin, N;
%此函数是根据生成多项式和输入状态产生长度为N的伪随机序列
%G为生成多项式
%Zin为移位寄存器初始化
%N为PN序列长度
%y为生成的PN码序列
%Z为移位寄存器的输出状态
L = lengthG; Z = Zin;%移位寄存器的初始化
y = zerosN, 1;
for i=1:N
yi = ZL;
Z = xorG*ZL, Z;
Z = [ZL; Z1:L-1];
end
function [TxOut, PN, MF] = Modulatorchips, MFType, Walsh;
%此函数用于实现IS-95前向链路系统的数据调制
%chips为发送的初始数据
%MFType为成型滤波器的类型选择
%Walsh为walsh码
%TxOut为调制输出信号序列
%PN为用于扩频调制的PN码序列
%MF为匹配滤波器参数
global Zi Zq show R Gi Gq
N = lengthchips*lengthWalsh;
%输入速率 = 19.2kbps, 输出速率= 1.2288mcps
tmp = signWalsh-12*signchips''-12;
chips = reshapetmp, prodsizetmp, 1;
[PNi Zi] = PNGenGi, Zi, N;
[PNq Zq] = PNGenGq, Zq, N;
PN = signPNi-12 j*signPNq-12;
chips_out = chips.*PN;
chips = [chips_out, zerosN, R-1];
chips = reshapechips.'' , N*R, 1;
%成型滤波器
switch MFType
case 1
%升余弦滤波器
L = 25; L_2 = floorL2;
n = [-L_2:L_2]; B = 0.7;
MF = sincnR.*cospi*B*nR.1-2*B*nR.^2;
MF = MFsqrtsumMF.^2;
case 2
%矩形滤波器
L = R; L_2 = floorL2;
MF = onesL, 1;
MF = MFsqrtsumMF.^2;
case 3
%汉明滤波器
L = R; L_2 = floorL2;
MF = hammingL;
MF = MFsqrtsumMF.^2;
end
MF = MF:;
TxOut = sqrtR*convMF, chipssqrt2;
TxOut = TxOutL_2 1: end - L_2;
if show
figure;
subplot211; plotMF, ''-o''; title''Matched Filter''; grid on;
subplot212; psdTxOut, 1024, 1e3, 113; title''Spectrum'';
end
function [SD] = DemodulatorRxIn, PN, MF, Walsh;
%此函数是实现基于RAKE接收机的IS-95前向信链路系统的数据包的解调
%RxIn为输入信号
%PN为PN码序列用于解扩
%MF为匹配滤波器参数
%Walsh为用于解调的walsh码
%SD为RAKE接收机的软判决输出
global R
N = lengthRxInR; L = lengthMF;
L_2 = floorL2; rr = convflipudconjMF, RxIn;
rr = rrL_2 1: end - L_2;
Rx = signrealrr1:R:end j*signimagrr1:R:end;
Rx = reshapeRx, 64, N64;
Walsh = onesN64, 1*signWalsh''-12;
PN = reshapePN, 64, N64''; PN = PN.*Walsh;
%输入速率 = 1.2288 Mpbs, 输出速率=19.2kbps
SD= PN*Rx; SD= realdiagSD;
function [DataOut, Metric] = ReceiverSDSDchips, G, Scrambler;
%此函数用于实现基于Viterbi译码的发送数据的恢复
%SDchips为软判决RAKE接收机输入符号
%G为Viterbi编码生成多项式矩阵
%Scrambler为扰码序列
%DataOut为接收数据二进制形式
%Metric为Viterbi译码最佳度量
if nargin == 1
G = [1 1 1 1 0 1 0 1 1; 1 0 1 1 1 0 0 0 1];
end
%速率=19.2kbps
SDchips = SDchips.*sign12-Scrambler;
INTERL = reshapeSDchips, 16, 24;
SDchips = reshapeINTERL'', lengthSDchips, 1; %速率=19.2kbps
[DataOut Metric] = SoftVitDecG, SDchips, 1;
function [xx, BestMetric] = SoftVitDecG, y, ZeroTail;
%此函数是实现软判决输入的Viterbi译码
%G为生成多项式的矩阵
%y为输入的待译码序列
%ZeroT为判断是否包含0尾
%xx为Viterbi译码输出序列
%BestMetric为最后的最佳度量
L = sizeG, 1; %输出码片数
K= sizeG, 2; %生成多项式的长度
N = 2^K-1;%状态数
T = lengthyL;%最大栅格深度
OutMtrx = zerosN, 2*L;
for s = 1:N
in0 = onesL, 1*[0, dec2bins-1, K-1-''0''];
in1 = onesL, 1*[1, dec2bins-1, K-1-''0''];
out0 = modsumG.*in0'', 2;
out1 = modsumG.*in1'', 2;
OutMtrxs, : = [out0, out1];
end
OutMtrx = signOutMtrx-12;
PathMet = [100; zerosN-1, 1];%初始状态 = 100
PathMetTemp = PathMet:,1;
Trellis = zerosN, T; Trellis:,1 = [0 : N-1]'';
y = reshapey, L, lengthyL;
for t = 1:T
yy = y:, t;
for s = 0:N2-1
[B0 ind0] = max PathMet1 [2*s, 2*s 1] [OutMtrx1 2*s, 0 [1:L]...
* yy; OutMtrx1 2*s 1, 0 [1:L]*yy] ;
[B1 ind1] = max PathMet1 [2*s, 2*s 1] [OutMtrx1 2*s, L [1:L]...
* yy; OutMtrx1 2*s 1, L [1:L] * yy] ;
PathMetTemp1 [s, s N2] = [B0; B1];
Trellis1 [s, s N2], t 1 = [2*s ind0-1; 2*s ind1-1];
end
PathMet = PathMetTemp;
end
xx = zerosT, 1;
if ZeroTail
BestInd = 1;
else
[Mycop, BestInd] = maxPathMet;
end
BestMetric = PathMetBestInd;
xxT = floorBestInd-1N2;
NextState = TrellisBestInd, T 1;
for t=T:-1:2
xxt-1 = floorNextStateN2;
NextState = Trellis NextState 1, t;
end
if ZeroTail
xx = xx1:end-K 1;
end
function [DataOut, Metric] = ReceiverHDHDchips, G, Scrambler;
%此函数用于实现基于Viterbi译码的硬判决接收机
%SDchips为硬判决RAKE接收机输入符号
%G为Viterbi编码生成多项式矩阵
%Scrambler为扰码序列
%DataOut为接收数据二进制形式
%Metric为Viterbi译码最佳度量
if nargin == 1
G = [1 1 1 1 0 1 0 1 1; 1 0 1 1 1 0 0 0 1];
end
%速率=19.2kbps
HDchips = xorHDchips, Scrambler;
INTERL = reshapeHDchips, 16, 24;
HDchips = reshapeINTERL'', lengthHDchips, 1;
[DataOut Metric] = VitDecG, HDchips, 1;
function [xx, BestMetric] = VitDecG, y, ZeroTail;
%此函数是实现硬判决输入的Viterbi译码
%G为生成多项式的矩阵
%y为输入的待译码序列
%Zer为判断是否包含0尾
%xx为Viterbi译码输出序列
%BestMetric为最后的最佳度量
L = sizeG, 1; %输出码片数
K= sizeG, 2; %生成多项式长度
N = 2^K-1;%状态数
T = lengthyL;%最大栅格深度
OutMtrx = zerosN, 2*L;
for s = 1:N
in0 = onesL, 1*[0, dec2bins-1, K-1-''0''];
in1 = onesL, 1*[1, dec2bins-1, K-1-''0''];
out0 = modsumG.*in0'', 2;
out1 = modsumG.*in1'', 2;
OutMtrxs, : = [out0, out1];
end
PathMet = [0; 100*onesN-1, 1];
PathMetTemp = PathMet:,1;
Trellis = zerosN, T;
Trellis:,1 = [0 : N-1]'';
y = reshapey, L, lengthyL;
for t = 1:T
yy = y:, t'';
for s = 0:N2-1
[B0 ind0] = min PathMet1 [2*s, 2*s 1] [sumabsOutMtrx1 2*s, 0 [1:L]...
- yy.^2; sumabsOutMtrx1 2*s 1, 0 [1:L] - yy.^2] ;
[B1 ind1] = min PathMet1 [2*s, 2*s 1] [sumabsOutMtrx1 2*s,...
L [1:L] - yy.^2; sumabsOutMtrx1 2*s 1, L [1:L] - yy.^2] ;
PathMetTemp1 [s, s N2] = [B0; B1];
Trellis1 [s, s N2], t 1 = [2*s ind0-1; 2*s ind1-1];
end
PathMet = PathMetTemp;
end
xx = zerosT, 1;
if ZeroTail
BestInd = 1;
else
[Mycop, BestInd] = minPathMet;
end
BestMetric = PathMetBestInd;
xxT = floorBestInd-1N2;
NextState = TrellisBestInd, T 1;
for t=T:-1:2
xxt-1 = floorNextStateN2;
NextState = Trellis NextState 1, t;
end
if ZeroTail
xx = xx1:end-K 1;
end
|
|