matlab实现0,1简单序列2FSK调制

  • 0,1简单序列2FSK调制
    • 前言
    • 代码
      • 参数配置
      • 生成数据源
      • 设置载波
      • 调制
      • 加噪
      • 相干解调
      • 过低通滤波器
      • 判决
    • 总代码
      • fskk.m(主代码)
      • erlow.m(低通滤波器1)
      • erlow.m(低通滤波器2)

0,1简单序列2FSK调制

前言

本代码是最简单的0,1序列2FSK调制,未做同步与均衡,概念性问题网上能随便查到,不做过多叙述。

代码

参数配置

// 参数配置
fs=3840000;        % 采样率配为3840kHz,为128000*30所得,且30720000/8
sample_num=30;         %一个符号采样点数为30
Rb=fs/sample_num;       %符号速率,128k bpslen_symbol=2500;                %符号个数,可计算总样点数为N=len_sambol*sample_num,
bits_per_sybol=1;           %2FSK一个符号对应1个比特
len=len_symbol*bits_per_sybol;           %数据源比特个数
f1=Rb*4;          %载波频率,单位Hz,载波频率配置需为Rb的整数倍,同时能被采样率整除,为128kHz
f2=Rb*2;N=len_symbol*sample_num*100             %符号采样点数
dt=1/fs;
t0=0:dt:(N*2-1)*dt;
t=0:dt:(N/30-1)*dt;%符号时间轴

采样率依照3480kHz来设置,这是通信类学生符合实验中硬件类需求的标准。

生成数据源

%% 生成数据源
st1=randi([0,1],1,len);%随机生成0,1序列
st2=-st1+1;%生成基带信号反码,1变成0,0变成1g11=(ones(1,100))'*st1;  %产生方波信号
g1a=g11(:)';
g12=(ones(1,100))'*st2;  %产生方波信号
g2a=g12(:)'; figure(1);
subplot(211);
plot(g1a);
title('基带信号st1');
axis([0,500,-1,2]);
subplot(212);
plot(g2a);
title('基带信号反码st2');
axis([0,500,-1,2]);

方波信号的设置是为了让结果显得更加清晰,如果觉得不需要也可去掉方波信号设置,直接使用产生的随机序列进行还原亦可,只是效果会不尽理想。

设置载波

%载波信号
s1=cos(2*pi*f1*t);
s2=cos(2*pi*f2*t);
figure(2)
subplot(211),plot(s1);
axis([0 500 -1.5 1.5]);
title('载波信号s1');
subplot(212),plot(s2);
axis([0 500 -1.5 1.5]);
title('载波信号s2');

调制

F1=g1a.*s1;%加入载波1
F2=g2a.*s2;%加入载波2
figure(3);
subplot(411);
plot(F1);
axis([0 500 -1.5 1.5]);
title('F1=s1*st1');
subplot(412);
plot(F2);
axis([0 500 -1.5 1.5]);
title('F2=s2*st2');
e_fsk=F1+F2;
subplot(413);
plot(e_fsk);
axis([0 500 -1.5 1.5]);
title('2FSK信号');%键控法产生的信号在相邻码元之间相位不一定连续

进行两个载波调制并加到一起。

加噪

%加噪
nosie=rand(1,len*100);%加入均值为0,方差为1的高斯白噪声
fsk=e_fsk+nosie;
subplot(414);
plot(fsk);
axis([0 500 -1.5 1.5]);
title('加噪声后信号')fsk=conv(fsk,20);%过匹配滤波器figure(4);
subplot(311);
plot(fsk);
axis([0 500 -30 30]);
title('过匹配滤波器后的加噪声后信号')

匹配滤波器fsk=conv(fsk,20),其实就是卷积,加噪后噪声是很小的,通俗点说,翻倍增长,原序列比例为10,噪声比例为0.1,二者比例为100,而假如翻二倍,原序列比例为100,噪声比例为0.01,二者比例为10000,因而大大降低了噪声对原序列还原时会造成的影响。

相干解调

%相干解调
st1=fsk.*s1; %与载波1相乘
st2=fsk.*s2;%与载波2相乘subplot(312);
plot(t,st1);
axis([0 0.001 -30 30]);
title('加噪后的信号与s1相乘后波形');
subplot(313);
plot(t,st2);
axis([0 0.001 -30 30]);
title('加噪后的信号与s2相乘后波形');

过低通滤波器

%通过低通滤波器
st1=filter(erlow,st1);
st2=filter(erlow2,st2);figure(5);
subplot(211);
plot(t,st1);
axis([0 0.001 -30 30]);
title('过低通滤波器后st1波形');
subplot(212);
plot(t,st2);
axis([0 0.001 -30 30]);
title('过低通滤波器后st2波形');

相干解调后两个波形要通过低通滤波器,这儿用到两个,但其实用的是一个参数,本人软件方面有点问题,故而设了两个低通滤波器。

判决

%判决
for m=0:200if st1(1,m*30+15)>st2(1,m*30+15)for j=m*30+1:(m+1)*30at(1,j)=1;endelsefor j=m*30+1:(m+1)*30at(1,j)=0;endend
end

此处注意的是判决长度需与符号采样点数保持一致,代码中参数为一个符号采样点数为30。

%subplot(313);
figure(6)
subplot(311);
plot(g1a);
title('基带信号st1');
axis([0,5000,-1,2]);
subplot(312);
plot(g2a);
title('基带信号反码st2');
axis([0,5000,-1,2]);
subplot(313);
plot(at);
axis([0,5000,-1,2]);
title('抽样判决后波形')

将基带信号与最终还原出来的信号放在一起做对比,看还原的是否成功。

总代码

fskk.m(主代码)

fs=3840000;        % 采样率配为3840kHz,为128000*30所得,且30720000/8
sample_num=30;         %一个符号采样点数
Rb=fs/sample_num;       %符号速率,128k bpslen_symbol=2500;                %符号个数,可计算总样点数为N=len_sambol*sample_num,
bits_per_sybol=1;           %2FSK一个符号对应1个比特
len=len_symbol*bits_per_sybol;           %数据源比特个数
f1=Rb*4;          %载波频率,单位Hz,载波频率配置需为Rb的整数倍,同时能被采样率整除,为128kHz
f2=Rb*2;N=len_symbol*sample_num*100             %符号采样点数
dt=1/fs;
t0=0:dt:(N*2-1)*dt;
t=0:dt:(N/30-1)*dt;%符号时间轴%% 生成数据源
st1=randi([0,1],1,len);
st2=-st1+1;%生成基带信号反码,1变成0,0变成1g11=(ones(1,100))'*st1;  %产生方波信号
g1a=g11(:)';
g12=(ones(1,100))'*st2;  %产生方波信号
g2a=g12(:)'; figure(1);
subplot(211);
plot(g1a);
title('基带信号st1');
axis([0,500,-1,2]);
subplot(212);
plot(g2a);
title('基带信号反码st2');
axis([0,500,-1,2]);%载波信号
s1=cos(2*pi*f1*t);
s2=cos(2*pi*f2*t);
figure(2)
subplot(211),plot(s1);
axis([0 500 -1.5 1.5]);
title('载波信号s1');
subplot(212),plot(s2);
axis([0 500 -1.5 1.5]);
title('载波信号s2');%调制
F1=g1a.*s1;%加入载波1
F2=g2a.*s2;%加入载波2
figure(3);
subplot(411);
plot(F1);
axis([0 500 -1.5 1.5]);
title('F1=s1*st1');
subplot(412);
plot(F2);
axis([0 500 -1.5 1.5]);
title('F2=s2*st2');
e_fsk=F1+F2;
subplot(413);
plot(e_fsk);
axis([0 500 -1.5 1.5]);
title('2FSK信号');%键控法产生的信号在相邻码元之间相位不一定连续%加噪
nosie=rand(1,len*100);%加入均值为0,方差为1的高斯白噪声
fsk=e_fsk+nosie;
subplot(414);
plot(fsk);
axis([0 500 -1.5 1.5]);
title('加噪声后信号')fsk=conv(fsk,20);%过匹配滤波器figure(4);
subplot(311);
plot(fsk);
axis([0 500 -30 30]);
title('过匹配滤波器后的加噪声后信号')
%相干解调
st1=fsk.*s1; %与载波1相乘
st2=fsk.*s2;%与载波2相乘subplot(312);
plot(t,st1);
axis([0 0.001 -30 30]);
title('加噪后的信号与s1相乘后波形');
subplot(313);
plot(t,st2);
axis([0 0.001 -30 30]);
title('加噪后的信号与s2相乘后波形');%通过低通滤波器
st1=filter(erlow,st1);
st2=filter(erlow2,st2);figure(5);
subplot(211);
plot(t,st1);
axis([0 0.001 -30 30]);
title('过低通滤波器后st1波形');
subplot(212);
plot(t,st2);
axis([0 0.001 -30 30]);
title('过低通滤波器后st2波形');%判决
for m=0:200if st1(1,m*30+15)>st2(1,m*30+15)for j=m*30+1:(m+1)*30at(1,j)=1;endelsefor j=m*30+1:(m+1)*30at(1,j)=0;endend
end
%subplot(313);
figure(6)
subplot(311);
plot(g1a);
title('基带信号st1');
axis([0,5000,-1,2]);
subplot(312);
plot(g2a);
title('基带信号反码st2');
axis([0,5000,-1,2]);
subplot(313);
plot(at);
axis([0,5000,-1,2]);
title('抽样判决后波形')

erlow.m(低通滤波器1)

function Hd = erlow
%ERLOW Returns a discrete-time filter object.% MATLAB Code
% Generated by MATLAB(R) 9.2 and the Signal Processing Toolbox 7.4.
% Generated on: 29-Nov-2020 22:17:42% FIR Window Lowpass filter designed using the FIR1 function.% All frequency values are in Hz.
Fs = 48000;  % Sampling FrequencyN    = 11;       % Order
Fc   = 12800;    % Cutoff Frequency
flag = 'scale';  % Sampling Flag
Beta = 0.5;      % Window Parameter% Create the window vector for the design algorithm.
win = kaiser(N+1, Beta);% Calculate the coefficients using the FIR1 function.
b  = fir1(N, Fc/(Fs/2), 'low', win, flag);
Hd = dfilt.dffir(b);% [EOF]

erlow.m(低通滤波器2)

function Hd = erlow2
%ERLOW Returns a discrete-time filter object.% MATLAB Code
% Generated by MATLAB(R) 9.2 and the Signal Processing Toolbox 7.4.
% Generated on: 29-Nov-2020 22:17:42% FIR Window Lowpass filter designed using the FIR1 function.% All frequency values are in Hz.
Fs = 48000;  % Sampling FrequencyN    = 11;       % Order
Fc   = 12800;    % Cutoff Frequency
flag = 'scale';  % Sampling Flag
Beta = 0.5;      % Window Parameter
% Create the window vector for the design algorithm.
win = kaiser(N+1, Beta);% Calculate the coefficients using the FIR1 function.
b  = fir1(N, Fc/(Fs/2), 'low', win, flag);
Hd = dfilt.dffir(b);% [EOF]

祝您生活顺心,事事顺利。

matlab实现0,1序列2FSK调制相关推荐

  1. 【通信原理】实验五 基于Matlab的2ASK和2FSK调制解调

    目录 一.实验目的 二.实验器材 三.实验原理 1.二进制振幅键控(2ASK) 2.二进制频移键控(2FSK) 四.示例演示 1.2ASK的模拟调制程序如下: 2.2ASK的开关键控法,调制程序如下: ...

  2. matlab解调2fsk,2FSK调制解调系统的MATLAB实现

    第 34 卷 第 2 期 玉林师范学院学报(自然科学) Vol.34 No.2 2013 年 JOURNAL OF YULIN NORMAL UNIVERSITY (Natural Science) ...

  3. matlab 2ask,(最新整理)基于MATLAB的2ASK和2FSK调制仿真(通信原理实验报告)

    <(最新整理)基于MATLAB的2ASK和2FSK调制仿真(通信原理实验报告)>由会员分享,可在线阅读,更多相关<(最新整理)基于MATLAB的2ASK和2FSK调制仿真(通信原理实 ...

  4. 基于MATLAB的多进制数字调制信号的矢量星座图分析

    1 前言 通信即传输信息,进行信息的时空转移.通信系统的作用就是将信息从信源发送到一个或多个目的地.实现通信的方式和手段很多,如手势.语言.旌旗.烽火台和击鼓传令,以及现代社会的电报.电话.广播.电视 ...

  5. 用verilog HDL实现数字基带信号的2FSK调制

    2FSK的介绍可以参考:https://blog.csdn.net/qq_39148922/article/details/84337730 下面介绍verilog HDL的源代码 module FS ...

  6. 2ASK和2FSK调制解调仿真

    实验一  2ASK和2FSK调制解调仿真 一.实验目的 1.熟悉2ASK和2FSK调制解调原理. 2.掌握编写2ASK和2FSK调制解调程序的要点. 3.掌握使用Matlab调制解调仿真的要点. 二. ...

  7. 2FSK调制解调实验

    一,2FSK原理 频移键控是利用载波的频率变化来传递数字信息.数字频率调制是数据通信中使用较 早的一种通信方式,由于这种调制解调方式容易实现,抗噪声和抗衰减性能较强,因此在 中低速数字通信系统中得到了 ...

  8. 基于Verilog实现2FSK调制

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 为什么要进行调制? FSK调制原理 二.调制的过程 1.M序列发生器 2.载波的实现 3.调制信号 4.wave仿真图 5. ...

  9. 【 MATLAB 】两个序列的卷积和运算的MATLAB实现(2)

    已知下面两个序列: 求这两个序列的卷积. 求卷积的函数是conv,但是使用这个函数有个问题,就是下标问题,也就是求卷积之后的元素值的位置.因此,我们必须要定一个起始点和一个结束点. 方法: 是两个有限 ...

最新文章

  1. 零散的MySQL基础总是记不住?看这一篇就够了!
  2. CodeForces 609B The Best Gift
  3. win7清除系统托盘图标的方法
  4. 圣诞节玩购目的地大比拼
  5. 【Matlab】定义顺序增加的字符串数组(A1,A2 ... An)并写到Excel的第一行
  6. java运行安全_Java运行时环境
  7. 设计模式在vue中的应用(五)
  8. Java获取泛型T的类型 T.class
  9. 提高虚拟机运行速度方法
  10. git 下载指定历史版本
  11. VC 轻松实现非客户区按钮
  12. [Realtek sdk-3.4.14b]升级iptables以支持IPv6 DHCPV6 NAT6的MASQUERADE属性(原厂默认iptables不支持NAT6)
  13. 王垠:如何掌握所有的程序语言
  14. 直播电商购物消费者满意度在线调查报告(三)
  15. Jungle Roads丛林道路(最小生成树PrimKruskal算法)
  16. 简历重点stat法则
  17. antdvue上传组件onChange状态值为uploading的问题
  18. 小白也能看懂的XML简介
  19. 杠杆股票买哪些股票容易出现涨停板?
  20. Unbroken——坚不可摧

热门文章

  1. 腾讯用Q币补偿部分QQ付费用户 需主动提出申请
  2. 做php段子,段子搬运工
  3. PrintWriter输出乱码问题
  4. 区块链≠绿色?波卡或成 Web3“生态环保”标杆
  5. 优思学院祝你冬至快乐!
  6. 如何高效促活?华为应用市场AppGallery Connect增长指南来啦!
  7. 计算机发展史-计算机基础知识总结(下)
  8. python中rstrip 函数_Python中字符串之rstrip()方法有哪些功能?
  9. 【牛客刷题】前端面试必备——HTML
  10. 日语初学者会话100句