C语言计算误码率

#include <stdio.h>
#include <stdlib.h>

bool dayin=true; //是否打印 

int main(){
    
    int i,k,g=0;
    int n1=0,n2=0;
    int good=0,bad=0;
    double rate;
    (dayin)? printf("打印具体数据\n"):printf("不打印具体数据\n\n");
    FILE *fpRead=fopen("D:\\Alice.dat","r");
    if(fpRead==NULL)
    {
        return 111;
    }
    fseek(fpRead, 0, SEEK_END);
    n1 = ftell(fpRead);
    unsigned char *left = (unsigned char*)malloc(n1);
    fseek(fpRead, 0, SEEK_SET);
    fread(left, n1, 1, fpRead);

    /*printf("left数组数据为:\n");
    for(i=0;i<n1;i++){
        printf("%02X ", left[i]);
    }*/
    printf("\n共%d个\n\n",n1);
    fclose(fpRead);
    
    FILE *fpRead2=fopen("D:\\Bob.dat","r");
    if(fpRead2==NULL)
    {
        free(left);
        return 222;
    }
    fseek(fpRead2, 0, SEEK_END);
    n2 = ftell(fpRead2);
    unsigned char *right = (unsigned char*)malloc(n2);
    fseek(fpRead2, 0, SEEK_SET);
    fread(right, n2, 1, fpRead2);
    /*printf("right数组数据为:\n");
    for(i=0;i<n2;i++){
        printf("%02X ", right[i]);
    }*/
    printf("\n共%d个\n\n",n2);
    fclose(fpRead2);
        
    
    printf("检查数据是否正确,按回车键进行下一步。\n");
    getchar();
    if(n1!=n2){
        printf("!两边数据个数不等!\n");
        free(left);
        free(right);
        return 333;
    } 
    if(n1%2!=0){
        printf("!二进制数据个数必须为偶数!\n");
        free(left);
        free(right);
        return 444;
    }

    printf("开始比对\n");
    for(i=0;i<=n1-2;i++){  //有n1个数,对应编号left[n-1],为二进制中的第二个数,故只要循环至n1-2即可 
        if(i%2==1)  continue;  //每两个01为一组 
        if(left[i]!=right[i]) { //若第一个数不同则跳过 
        g++;
        continue;
        }  
        if(left[i+1]==right[i+1]) good++;
        else {
        bad++;
        if(dayin==true)printf("第%d组数不同,分别为%d%d和%d%d\n",i/2+1,left[i],left[i+1],right[i],right[i+1]); 
    }
    }
    if((g+good+bad)!=(n1/2)){
        printf("比对过程中数据遗漏?");
        free(left);
        free(right);
        return 555; 
    } 
    
    rate=(double)bad/(double)(good+bad)*100;
    printf("结果:\n基不同的共%d组。相同的二进制共%d组,不同的有%d组,误码率为%g%%\n",g,good,bad,rate);
    printf("比对结束\n");
    free(left);
    free(right);
    system("pause");
    return 666;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/718166.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32-SPI通信协议

串行外设接口SPI&#xff08;Serial Peripheral Interface&#xff09;是由Motorola公司开发的一种通用数据总线。 在某些芯片上&#xff0c;SPI接口可以配置为支持SPI协议或者支持I2S音频协议。 SPI接口默认工作在SPI方式&#xff0c;可以通过软件把功能从SPI模式切换…

Python·算法·每日一题(3月4日)最长公共前缀

题目 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀&#xff0c;返回空字符串 “”。 示例 示例 1&#xff1a; 输入&#xff1a;strs ["flower","flow","flight"] 输出&#xff1a;"fl"示例 2&#xff1a;…

【数据结构与算法】常见排序算法(Sorting Algorithm)

文章目录 相关概念1. 冒泡排序&#xff08;Bubble Sort&#xff09;2. 直接插入排序&#xff08;Insertion Sort&#xff09;3. 希尔排序&#xff08;Shell Sort&#xff09;4. 直接选择排序&#xff08;Selection Sort&#xff09;5. 堆排序&#xff08;Heap Sort&#xff09;…

【脑科学相关合集】有关脑影像数据相关介绍的笔记及有关脑网络的笔记合集

【脑科学相关合集】有关脑影像数据相关介绍的笔记及有关脑网络的笔记合集 前言脑模板方面相关笔记清单 基于脑网络的方法方面数据基本方面 前言 这里&#xff0c;我将展开有关我自己关于脑影像数据相关介绍的笔记及有关脑网络的笔记合集。其中&#xff0c;脑网络的相关论文主要…

【错误处理】【Hive】【Spark】ERROR FileFormatwriter: Aborting job null.

问题背景 近日&#xff0c;使用 Spark 在读写 Hive 表时发生了报错&#xff1a;Aborting job null&#xff0c;如果怎么都使用不了那张表的话&#xff0c;大概率是那张表有脏数据&#xff0c;导致整张表无法正常使用。 ERROR FileFormatwriter: Aborting job null.解决方法 …

SpringBoot 如何快速过滤出一次请求的所有日志?

前言 在现网出现故障时&#xff0c;我们经常需要获取一次请求流程里的所有日志进行定位。如果请求只在一个线程里处理&#xff0c;则我们可以通过线程ID来过滤日志&#xff0c;但如果请求包含异步线程的处理&#xff0c;那么光靠线程ID就显得捉襟见肘了。 华为IoT平台&#x…

《自然》:人工智能在创造性思维方面超越人类

发散性思维被认为是创造性思维的指标。ChatGPT-4 在三项有151名人类参与的**发散思维测试中&#xff0c;**展现出比人类更高水平的创造力&#xff0c;结果显示人工智能在创意领域持续发展。 发散性思维的特点是能够针对没有预期解决方案的问题提出独特的解决方案&#xff0c;例…

TOMCAT的安装与基本信息

一、TOMCAT简介 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器&#xff0c;属于轻量级应用服务器&#xff0c;在中小型系统和并发访问用户不是很多的场合下被普遍使用&#xff0c;是开发和调试JSP 程序的首选。对于一个初学者来说&#xff0c;可以这样认为&#xff0c…

IO 与 NIO

优质博文&#xff1a;IT-BLOG-CN 一、阻塞IO / 非阻塞NIO 阻塞IO&#xff1a;当一条线程执行read()或者write()方法时&#xff0c;这条线程会一直阻塞直到读取到了一些数据或者要写出去的数据已经全部写出&#xff0c;在这期间这条线程不能做任何其他的事情。 非阻塞NIO&…

记录踩过的坑-macOS下使用VS Code

目录 切换主题 安装插件 搭建Python开发环境 装Python插件 配置解释器 打开项目 打开终端 切换主题 安装插件 方法1 方法2 搭建Python开发环境 装Python插件 配置解释器 假设解释器已经通过Anaconda建好&#xff0c;只需要在VS Code中关联。 打开项目 打开终端

ArmV8架构

Armv8/armv9架构入门指南 — Armv8/armv9架构入门指南 v1.0 documentation 上面只是给了一个比较好的参考文档 其他内容待补充

网络-httpclient调用https服务端绕过证书的方法

httpclient调用https服务端绕过证书的方法 在日常开发或者测试中&#xff0c;通常会遇到需要用httpclient客户端调用对方http是服务器的场景&#xff0c;由于没有证书&#xff0c;所以直接是无法调用的。采用下面的方法可以绕过证书验证&#xff1a; TrustManager[] trustAll…

AutoSAR(基础入门篇)13.5-Mcal Mcu时钟的配置

目录 一、EB的Mcu模块结构 二、时钟的配置 对Mcu的配置主要就是其时钟树的配置,但是EB将GTM、ERU等很多重要的模块也都放在了Mcu里面做配置,所以这里的Mcu是一个很庞大的模块, 我们目前只讲时钟树的部分 一、EB的Mcu模块结构 1. 所有的模块都基本上是这么些配置类别,Mc…

单词级文本攻击—论文阅读

TAAD2.2论文概览 0.前言1-101.Bridge the Gap Between CV and NLP! A Gradient-based Textual Adversarial Attack Frameworka. 背景b. 方法c. 结果d. 论文及代码 2.TextHacker: Learning based Hybrid Local Search Algorithm for Text Hard-label Adversarial Attacka. 背景b…

阅读笔记 | Transformers in Time Series: A Survey

阅读论文&#xff1a; Wen, Qingsong, et al. “Transformers in time series: A survey.” arXiv preprint arXiv:2202.07125 (2022). 这篇综述主要对基于Transformer的时序建模方法进行介绍。论文首先简单介绍了Transformer的基本原理&#xff0c;包括位置编码、多头注意力机…

OPENAI SORA:未来视频创作的新引擎——浅析其背后的人工智能算法

Sora - 探索AI视频模型的无限可能 随着人工智能技术的飞速发展&#xff0c;AI视频模型已成为科技领域的新热点。而在这个浪潮中&#xff0c;OpenAI推出的首个AI视频模型Sora&#xff0c;以其卓越的性能和前瞻性的技术&#xff0c;引领着AI视频领域的创新发展。本文将探讨SORA的…

回归预测 | Matlab实现RIME-BP霜冰算法优化BP神经网络多变量回归预测

回归预测 | Matlab实现RIME-BP霜冰算法优化BP神经网络多变量回归预测 目录 回归预测 | Matlab实现RIME-BP霜冰算法优化BP神经网络多变量回归预测预测效果基本描述程序设计参考资料 预测效果 基本描述 1.Matlab实现RIME-BP霜冰算法优化BP神经网络多变量回归预测&#xff08;完整…

自动化测试介绍、selenium用法(自动化测试框架+爬虫可用)

文章目录 一、自动化测试1、什么是自动化测试&#xff1f;2、手工测试 vs 自动化测试3、自动化测试常见误区4、自动化测试的优劣5、自动化测试分层6、什么项目适合自动化测试 二、Selenuim1、小例子2、用法3、页面操作获取输入内容模拟点击清空文本元素拖拽frame切换窗口切换/标…

十五 超级数据查看器 讲解稿 外观设置

十五 超级数据查看器 讲解稿 外观设置 视频讲座地址 讲解稿全文: 大家好&#xff0c;今天讲解超级数据查看器,详情界面的外观设置。 首先&#xff0c;我们打开超级数据查看器。 本节课以成语词典为例来做讲述。 我们打开成语词典这个表&#xff0c;随便选一条记录点击&#x…

AutoSAR(基础入门篇)13.4-Mcal Dio代码分析

目录 一、文件结构 二、动态代码 1、arxml文件 2、Dio_Cfg.h 3、Dio_PBCfg.c 4、小结