✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
⛄ 内容介绍
整个系统的信号处理流程如下:
1、产生信号源,就是要发送的信息,这个是随机产生的01序列;
2、对信号源信号进行fsk调制,fsk调制的基本原理是:有两种频率的正弦波,一种表示0,另一种表示1;在信号上面看,就是有两种频率的正弦波,按照信号的排列方式,连接在了一起;
3、生成8个载波信号;
4、生成用户地址码,这个地方,原来用的是M序列,现在已经改成了m序列;用户地址码控制载波,生成用户载波序列;对于信号源的每一个0或者1,都会随机的选择一个频率作为载波,这个选择频率的方法,就是用户载波序列,这个用户载波序列,前面说了,就是根据m序列来的;
5、然后将第二步生成的FSK信号与随机载波序列相乘,也就是实现调制的过程;至此,信号产生就做完了;
6、给产生好的信号,添加高斯噪声;
7、接收机接收到信号后,进行低通滤波;这里一定必须是低通滤波,高通的话,信号就丢失了……
8、信号解调,这个其实就是用接收到的信号乘以用户载波,这样就实现了信号的相干解调;
9、然后就是FSK的解调,也就是用两个不同的频率的载波,去乘以解调之后的信号,然后在滤波,就可以得到信号序列了;
10、误码率统计,得到的01序列,跟第一步产生的01序列进行比较,看错了几个,然后计算误码率;
11、结束。
⛄ 部分代码
function [seq]=mseq(coef)
% 此函数用来生成m序列
% coef为反馈系数向量
coef=de2bi(coef);
m=length(coef);
len=2^m-1; % 得到最终生成的m序列的长度
backQ=0; % 对应寄存器运算后的值,放在第一个寄存器
seq=zeros(1,len); % 给生成的m序列预分配
registers = [1 zeros(1, m-2) 1]; % 给寄存器分配初始结果
for i=1:len
seq(i)=registers(m);
backQ = mod(sum(coef.*registers) , 2); %特定寄存器的值进行异或运算,即相加后模2
registers(2:length(registers)) = registers(1:length(registers)-1); % 移位
registers(1)=backQ; % 把异或的值放在第一个寄存器的位置
end
end
⛄ 运行结果
⛄ 参考文献
[1] 苏雪,马光善.2FSK调制解调系统的MATLAB实现[J].玉林师范学院学报, 2013(02):48-52.DOI:10.3969/j.issn.1004-4671.2013.02.012.
[2] 何婕,何小海,滕奇志,等.一种AM调幅-2FSK调频通信系统的研究[J].Journal of Terahertz Science and Electronic Information Technology, 2(1)[2023-06-07].