• m基于可见光通信系统的RFID接口过程以及ALOHA防碰撞算法的matlab仿真


    目录

    1.算法描述

    2.matlab算法仿真效果

    3.MATLAB核心程序

    4.完整MATLAB


    1.算法描述

           射频识别技术(Radio Frequency Identification,RFID)是一种非接触式自动识别技术,与传统的识别方式相比,它无需直接接触、无需光学可视、无需人工干预即可完成信息输入和处理,具有操作方便快捷、存储数据量大、保密性好、反应时间短、对环境适应性强等优点,现在已广泛应用于工业自动化、商业自动化和交通运输管理等领域,成为当前IT业研究的热点技术之一。

      典型的RFID系统主要包括三个部分:电子标签(tag)、读写器(Read)和应用系统(如图1)。电子标签放置在被识别的对象上,是RFID系统真正的数据载体。通常电子标签处于休眠状态,一旦进入读写器作用范围内就会被激活,并与读写器进行无线射频方式的非接触式双向数据通信,以达到识别并交换数据的目的。此外,许多读写器还都有附加的通信接口,以便将所获的数据传给应用系统进行进一步的处理。 

            对具有多个上传信道可同时上传ID信息的RFID 系统的空中接口过程进行仿真, 探讨系统识别标签的速率与信道数的关系,并与现有标准ISO,18000-6C的识别速率进行对比RFID 系统的空中接口过程, 当多个上传信道同时上传ID的时候,那么必然会涉及到多个信道之间的干扰,那么信道数目越多,这种相互干扰的就越严重,从而影响对不同上传ID识别速率,所以我们需要研究多信道和识别速度的关系。根据上面内容,需要研究两个方面的东西,一个接口过程,一个防碰撞算法。   

           RFID的接口过程满足如下的结构框图:

    关于防碰撞算法:

             进行多种算法的对比:设置不同的ID数量,然后分别仿真其对应的识别时间,即速率,然后做出仿真图。包括二进制搜索算法。标准ISO,18000-6C用的是ALOHA算法。

            “Aloha算法是一种非常简单的TDMA算法,该算法被广泛应用在RFID系统中。这种算法多采取“标签先发言”的方式,即标签一进入读写器的阅读区域就自动向读写器发送其自身的ID,随即标签和读写器间开始通信。

           ALOHA算法是随机接入算法的一种,当标签要发送数据信息时,它可以在任意时间段随机发送,把它称为纯ALOHA算法。

    2.matlab算法仿真效果

    matlab2022a仿真结果如下:

     

     

     

    3.MATLAB核心程序

    1. %%
    2. %参数定义
    3. %信息码长度
    4. SNR = [10:1:17];
    5. TDL = [500,400,300,200,100,50,20,10];
    6. ERR = zeros(1,length(SNR));
    7. for jj = 1:length(SNR)
    8. jj
    9. Num = 0;
    10. Ber = 0;
    11. while Ber <= TDL(jj);
    12. Num = Num + 1;
    13. Ber
    14. Frame_length = 10*64;
    15. %信息码速率为10KHz
    16. Rates = 10e3;
    17. %发送带宽20KHz
    18. Bwidth = 2*Rates;
    19. %发送信号功率2W
    20. Tpower = 2;
    21. %载波频率70MHz
    22. fc = 70e6;
    23. %采样频率280MHz,满足四倍采样
    24. fs = fc*4;
    25. %20KHz方波
    26. Swave1 = 20e3;
    27. %40KHz方波
    28. Swave2 = 40e3;
    29. %采样点数
    30. M = fs/(2*Swave2);
    31. %信息码采样点
    32. L = fs/Rates;
    33. %2ASK调制的调制度
    34. ma = 0.5;
    35. %alpha值
    36. alpha = 2*ma/(1-ma);
    37. %%
    38. %随机信息码产生
    39. data_code0 = zeros(1,Frame_length);
    40. %随机产生信息码
    41. data_code0 =(randn(1,Frame_length)>=0.5);
    42. %%
    43. %CRC校验
    44. data_code = func_CRC(data_code0);
    45. %%
    46. %数据采样化
    47. data_code_sample = func_samples(data_code,Frame_length,L);
    48. %%
    49. %编码
    50. data_code_sample = func_encode(data_code_sample,data_code,Frame_length,L,M);
    51. %%
    52. %调制发送
    53. %FIR低通滤波器设计
    54. data_sample_fir = func_filter(data_code_sample,fs,fc);
    55. T = Frame_length*L*(1/fs);
    56. t = [0:1/fs:T-(1/fs)];
    57. Carriers = cos(2*pi*fc*t);
    58. %ASK调制
    59. RFID_ASK =((2*Tpower).^0.5)*(1+alpha*data_sample_fir).*Carriers;
    60. %ASK调制信号加正弦波干扰
    61. RFID_ASK_sin = RFID_ASK + 10*cos(2*pi*fc*t+pi/6);
    62. %高斯信道
    63. snr = SNR(jj);
    64. RFID_ASK_sin_N = awgn(RFID_ASK_sin,snr,'measured');
    65. figure(1);
    66. subplot(221)
    67. plot(RFID_ASK(100:1000));
    68. title('2ASK调制信号');
    69. axis([0,1000,-10,10]);
    70. subplot(222)
    71. plot(RFID_ASK_sin(100:1000));
    72. grid on;
    73. title('ASK调制信号加正弦波干扰');
    74. axis([0,1000,-30,30]);
    75. subplot(223)
    76. plot(RFID_ASK_sin_N(100:1000));
    77. grid on;
    78. title('过信道之后信号');
    79. axis([0,1000,-30,30]);
    80. %限幅
    81. AMP = 10;
    82. RFID_ASK_sin_N_amp = func_amp_limit(RFID_ASK_sin_N,AMP);
    83. %ASK解调
    84. [RFID_deASK_filter,amp]=func_AKS_Demod(RFID_ASK_sin_N_amp,Carriers,fc,fs);
    85. subplot(224)
    86. plot(RFID_deASK_filter(100:end));
    87. grid on;
    88. title('2ASK解调信号');
    89. axis([0 L*Frame_length -5 20]);
    90. %判决门限
    91. RFID_deASK10 = func_unsamples(amp,Frame_length,M);
    92. %解码
    93. data_code_rec = func_decode(RFID_deASK10,Frame_length);
    94. %统计误码率
    95. Err_rate = func_err(data_code_rec,data_code,Frame_length);
    96. Ber = Ber + Err_rate*Frame_length;
    97. end
    98. ERR(jj) = Ber/(Num*Frame_length);
    99. end
    100. figure;
    101. semilogy(SNR,ERR,'b-o');
    102. xlabel('SNR');
    103. ylabel('BER');
    104. grid on;
    105. 01_094_m

    4.完整MATLAB

    V

    V

  • 相关阅读:
    使用 Python 进行自然语言处理第 4 部分:文本表示
    android 垂直方向进度条progressbar
    Hadoop简介
    七月论文审稿GPT第3.2版和第3.5版:通过paper-review数据集分别微调Mistral、gemma
    .Net分表分库动态化处理
    自动化测试 RobotFramework安装以及使用教程
    Unity 单例-接口模式
    beego语言golang编程语言安装bee : 无法将“bee”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。
    4. RxJava过滤操作符
    SpringBoot电商项目实战Day10 希尔排序
  • 原文地址:https://blog.csdn.net/hlayumi1234567/article/details/128120518