精华内容
下载资源
问答
  • matlab可以直接读取二进制数据文件,并且可以将其加入到矩阵中。如果对c语言十分熟悉的话,应该对fopen,fclose,ftell,fseek,fread,fwrite,feof这些函数非常熟悉了,幸运的是在matlab中仍然可以使用这些函数来读入...

    matlab可以直接读取二进制数据文件,并且可以将其加入到矩阵中。

    如果对c语言十分熟悉的话,应该对fopen,fclose,ftell,fseek,fread,fwrite,feof

    这些函数非常熟悉了,幸运的是在matlab中仍然可以使用这些函数来读入实验数据。

    现在假定有一个数据文件叫data.dat,它的前面2k是存放参数的,我们做数据处理的时候

    需要跳过去,后面的数据是16位整数类型的,每组数据有512个。现在要把该数据文件的

    所有数据读入一个nx512的矩阵中,n的个数不定,根据数据文件中的数据而定。

    用.m脚本的方式编写如下:

    % deal data from

    specified data file

    clear ;

    data_fname = 'data.dat' ; % 这里是文件名

    jump_distance = 2048

    ; %

    这里是跳过的字节数

    %

    打开方式为二进制打开,其实'r'就行,matlab是默认二进制形式打开文件的

    file_id =

    fopen(data_fname, 'rb');

    %

    从文件开始跳过jump_distance个字节

    fseek(file_id, jump_distance, 'bof');

    %

    先手工构造一个1x512大小的矩阵

    raw_data = [1:1:512] ;

    while feof(file_id) == 0

    %

    这就是大名顶顶的fread了,数据类型是int16,每次读入512个数

    %

    raw_array每次都是512x1的矩阵,ele_count为读入的数的个数(正常情况下应为512)

    [row_array,

    ele_count] = fread(file_id, 512, 'int16') ;

    if ele_count

    < 512 % elecount <

    512代表数据不够,已经到了文件的结尾

    break ;

    else

    %

    将512x1的row_array转置一下,变为1x512的矩阵

    row_array = row_array' ;

    %

    然后,将row_array追加到raw_data中

    raw_data = [raw_data; row_array] ;

    end

    end

    % get off the first line [1:1:512]

    %

    这里就是要把raw_data的第一行数据手工构造的那行数据给去掉,剩下的就都是文件中的数据了

    raw_data(1,:)=[] ;

    % 关闭文件

    fclose(file_id);

    % delete other

    usless vars

    %

    这里是把用过的变量都删除掉,免得workspace里面乱七八糟的什么都有,这是个好习惯,呵呵。

    clear data_fname jump_distance file_id fid ele_count i m n

    row_array ans;

    好了,得到这些数据以后,就可以做一些常规的数据处理了。其它算法部分,就不多说了让人乏味。

    展开全文
  • So I'm doing a project for school where I need to read in a binary data file and use it to make stats, like strength and wisdom, for characters. It's set up so the first 8 bits make up one stat.I was ...

    So I'm doing a project for school where I need to read in a binary data file and use it to make stats, like strength and wisdom, for characters. It's set up so the first 8 bits make up one stat.

    I was wondering what the actual syntax to do this is. Is it like reading text files, like this.

    File file = new File("CharacterStats.dat");

    Scanner inputScanner = new Scanner(file);

    inputScanner.next();

    解决方案

    If you're using JDK 7+ the easiest way would be:

    Path path = Paths.get("CharacterStats.dat");

    byte[] fileContents = Files.readAllBytes(path);

    And then do with that array whatever you want.

    Since a byte includes 8 bits you can access the first 8 bits by fileContents[0] and then probably control the flow of your program using bitwise operations.

    展开全文
  • 第一步:函数fopen打开文件 fid=fopen('文件名',读取方式) fid:句柄值 小于0表示打开失败;大于0表示打开成功 文件名:字符串,使用单引号(本文例子'savedata.dat...‘a’:在打开的文件末端添加数据文件不存在则创

    第一步:函数fopen打开文件

    fid=fopen('文件名',读取方式)
    

    fid:句柄值
    小于0表示打开失败;大于0表示打开成功

    文件名:字符串,使用单引号(本文例子'savedata.dat'

    读写方式:

    ‘r’:只读方式打开文件(默认的方式),该文件已存在。
    ‘r+’:读写方式打开文件,打开后先读后写。该文件已存在。
    ‘w’:打开后写入数据。该文件已存在则更新;不存在则创建。
    ‘w+’:读写方式打开文件。先读后写。该文件已存在则更新;不存在则创建。
    ‘a’:在打开的文件末端添加数据。文件不存在则创建。
    ‘a+’:打开文件后,先读入数据再添加数据。文件不存在则创建。

    注意:
    在打开方式后加’t’表示以文本方式打开:‘wt’
    ‘b’表示以二进制数据方式打开:‘wb’

    fopen默认以二进制方式打开;

    第二步:函数fread读取数据

    [data, count] = fread(fid, size, 数据类型)

    fid:句柄值(与第一步句柄值同名对应);

    size:表示读取内容的大小:

    • N(读取N个元素到一个列向量);
    • inf(读取整个文件);
    • [M, N](读数据到M×N的矩阵中,数据按列存放);

    数据类型:int16、int32、double、float等等
    data:读取的数据
    count:读取数据的实际数量

    第三步:函数fclose关闭文件

    fclose (fid);
    

    一般在对文件进行完读写操作以后需要关闭文件,防止数据丢失或者损坏。

    转载自使用Matlab读取二进制数据文件

    展开全文
  • 本发明涉及电子系统录波领域,更具体地,涉及一种COMTRADE二进制数据文件的快速解析方法。背景技术:近年来,随着电子技术的快速发展,电力系统暂态录波明显向高采样率、连续稳态记录和海量存储的趋势发展,这种录波...

    39836208db93bcd50292bb71ce909f24.gif

    本发明涉及电子系统录波领域,更具体地,涉及一种COMTRADE二进制数据文件的快速解析方法。

    背景技术:

    近年来,随着电子技术的快速发展,电力系统暂态录波明显向高采样率、连续稳态记录和海量存储的趋势发展,这种录波数据海量化趋势已经给各种分析软件增加了不小的计算压力,其中最明显的就是海量录波记录文件解析时间过长而导致的软件效率低下。

    为降低海量故障录波数据的存储空间及便于分析电网故障,研究人员分析研究特定的故障时,往往需要将与该故障相关的通道数据从整个数据文件中分离出来,形成新的与特定故障相关的特定数据文件。

    IEEE制定的COMTRADE标准,定义了用于含有从电力系统或电力系统模型得到的暂态波形和事件数据的文件格式,该格式是为了提供一个用于交换数据的易于解释的格式,便于第三方的处理和分析。

    COMTRADE标准规定与记录信息相关的文件有4个:头标文件、配置文件、数据文件和信息文件。其中,数据文件记录着每个采样通道中的每个采样数值。数据文件可以是美国标准信息交换码(ASCII)格式或二进制格式。

    对于二进制格式的数据文件,采用数据流格式,字格式定义为较小的字节(LSB)在前,最有定义的字节MSB在后。二进制数据文件采用与ASCII数据文件相同的基本格式,但状态通道数据下述方法压缩。状态通道采样数据存储于分组的字节中,每两个字节用于16个状态通道中的每个通道,一个字的意义最小的位用于16个通道中最小的输入通道编号。这样,状态字1(S1)的位0(零位)是数字输入编号1的状态。而状态字2(S2)的位1是数字输入编号18的状态。如果状态通道不可被16除尽,较大的通道必须以零比特填充。

    二进制数据文件相对于文本文件,具有占用存储空间较少、存储不存在转换时间(读写不要编解码,直接写值)的优点,有利于降低海量数据文件带来的不利影响,因而当前应用较为广泛。然而,COMTRADE二进制文件状态量的编译码规则较为复杂,将部分通道数据从数据文件中分离的过程中,若按传统的方法进行解析,存在耗时较长的问题。

    技术实现要素:

    本发明的目的是解决按传统的方法对COMTRADE二进制文件状态量进行解析存在耗时较长的缺陷,提出一种COMTRADE二进制数据文件的快速解析方法。

    为实现以上发明目的,采用的技术方案是:

    一种COMTRADE二进制数据文件的快速解析方,包括以下步骤:

    S1:判断所选取的状态量通道的状态信息在哪个字节中,设该字节为Sn,获得所选取的状态量通道在该字节Sn中的具体位置forcal以及Sn的值newdata;

    S2:根据对应字节Sn的值newdata及通道在字节Sn中的具体位置forcal,通过简单的判断及减法运算确定所选取的状态量通道的状态信息。

    优选的是,步骤S2所述forcal的大小范围为8>=forcal>=1,对应Sn的第forcal-1位。

    优选的是,步骤S2所述的newdata的大小范围为255>=newdata>=0。

    其中所述步骤S2包括以下步骤:

    S2.1:令n=7;

    S2.2:判断n=forcal-1是否成立,是则跳转到S2.5,否则跳转到S2.3;

    S2.3:判断newdata是否大于等于2n,是则令newdata=newdata–2n,然后跳转到S2.4;否则直接跳转到S2.4;

    S2.4:令n=n-1,然后跳转到S2.2;

    S2.5:判断newdata是否大于等于2n,是则所选取的状态量通道的状态信息为1,否则所选取的状态量通道的状态信息为0,结束。

    与现有技术相比,本发明的有益效果是:

    本发明的核心方法最多需要进行7次减法即可获得所选取的状态量通道的状态信息,大大的提高了效率,思路简单,易于编程实现。

    附图说明

    图1为本方法的流程图。

    图2为本发明与传统方法的效率对比图。

    具体实施方式

    附图仅用于示例性说明,不能理解为对本专利的限制;

    以下结合附图和实施例对本发明做进一步的阐述。

    实施例1

    一种COMTRADE二进制数据文件的快速解析方,如图1所示,包括以下步骤:

    S1:判断所选取的状态量通道的状态信息在哪个字节中,设该字节为Sn,获得所选取的状态量通道在该字节Sn中的具体位置forcal以及Sn的值newdata;

    S2:根据对应字节Sn的值newdata及通道在字节Sn中的具体位置forcal,通过简单的判断及减法运算确定所选取的状态量通道的状态信息。

    优选的是,步骤S2所述forcal的大小范围为8>=forcal>=1,对应Sn的第forcal-1位。

    优选的是,步骤S2所述的newdata的大小范围为255>=newdata>=0。

    其中所述步骤S2包括以下步骤:

    S2.1:令n=7;

    S2.2:判断n=forcal-1是否成立,是则跳转到S2.5,否则跳转到S2.3;

    S2.3:判断newdata是否大于等于2n,是则令newdata=newdata–2n,然后跳转到S2.4;否则直接跳转到S2.4;

    S2.4:令n=n-1,然后跳转到S2.2;

    S2.5:判断newdata是否大于等于2n,是则所选取的状态量通道的状态信息为1,否则所选取的状态量通道的状态信息为0,结束。

    本实施例采用国内某直流工程的现场录波数据,总通道数为821,其中模拟量通道数目为414,状态量通道数目为407。采样频率为8000Hz,每通道采样点数为56429。每次获取一个状态量通道的一个采样点的状态信息都必须执行一次算法。在本算例中,获得一个状态量通道的所有状态信息则需要执行56429次算法。比较结果如图2所示。从图2可见,选取的状态量通道数目较多时,传统方法耗时在百秒以上,如果需要解析多个文件,且选取的通道数目更多时,传统方法所耗时间剧增。本专利提出的算法相对传统方法效率提高了约150倍,能较好的解决耗时过长的问题。

    显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。

    展开全文
  • matlab可以直接读取二进制数据文件,并且可以将其加入到矩阵中。如果对c语言十分熟悉的话,应该对fopen,fclose,ftell,fseek,fread,fwrite,feof这些函数非常熟悉了,幸运的是在matlab中仍然可以使用这些函数来读入...
  • /**********************************************十六进制数据写入到二进制数据文件**********************************************/#includeintmain(){intbuffer;inti;FILE*inFile;FILE*outFile;inFile=fopen(...
  • MATLAB中读取二进制数据文件并加入到矩阵中的应用如下:如果对c语言十分熟悉的话,应该对fopen,fclose,ftell,fseek,fread,fwrite,feof这些函数非常熟悉了,在matlab中仍然可以使用这些函数来载入及处理实验数据。...
  • 北京理工大学 20981 陈罡matlab可以直接读取二进制数据文件,并且可以将其加入到矩阵中。如果对c语言十分熟悉的话,应该对fopen,fclose,ftell,fseek,fread,fwrite,feof这些函数非常熟悉了,幸运的是在matlab中仍然...
  • */ //向 Mysql数据库中存储二进制文件 @Testpublic voidadd(){ Connection conn= null; PreparedStatement st= null; ResultSet rs= null;try{ conn=JdbcUtils.getConnection(); String sql= "insert into testblob...
  • 我有一个处理脚本,用于提取“uint16”类型的二进制数据文件,并一次以6400块的形式进行各种处理.该代码最初是用Matlab编写的,但由于分析代码是用 Python编写的,我们希望通过在Python中完成所有工作来简化流程.问题是...
  • 二进制数据文件中的字符串替换的实现(C++) 文章目录二进制数据文件中的字符串替换的实现(C++)前言一、项目环境一、项目需求二、思路分析三、实现过程1.字符串转十六进制字符2.替换功能总结 前言 在工作中遇到一个...
  • Java 二进制数据转成文件

    千次阅读 2021-02-12 15:46:50
    /*** @Title: byteToFile * @Description: 把二进制数据转成指定后缀名的文件,例如PDF,PNG等 *@paramcontents 二进制数据 *@paramfilePath 文件存放目录,包括文件名及其后缀,如D:\file\bike.jpg * @Author: ...
  • xhr.responseType = "blob" // 设置响应数据类型为blob, 不设置会出现下载的文件比源文件更大 xhr.send() xhr.onload = function() { var blob = new Blob([this.response], { type: this.responseType.
  • (创建二进制数据文件)编写一个程序,如果文件 Exercisel7_02.dat 不存在,就创建一个名为 Exercisel7_02.dat 的文件。向这个文件追加新数据。使用二进制 I/O 将 100 个随机生成的整数写如这个文件中。 import java....
  • 我试图从服务器读取图像文件,代码如下。它总是进入例外。我知道发送的字节数是正确的,因为我在接收时将它们打印出来。我从python发送图像文件#open the image file and read it into an objectimgfile = open ...
  • 1.matlab生成数据以二进制数据格式写入txt文件中 QB=16; %将生成的数据以二进制数据格式写入txt文件中 Q_x=round(se1_addnoise/max(abs(se1_addnoise))*(2^14-1););%QB比特量化 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%...
  • 在很长的一段时间内 JavaScript 是不能操作二进制数据的。同样的为了安全性,直接操作文件也是不被支持的。但是随着 ECMAScript 5 的出现,引入了 Blob 对象,允许直接操作二进制数据。当然在?ECMAScript 5 之前也...
  • 概述Python 读写文件二进制数据比 C/C++ 语言复杂得多。主要差别在于需要进行 bytes 类型和其它基础数据类型(比如 int/float)的转换。转换工具在一般情况下都是使用 struct 库。读出数据在 open 函数中使用 rb ...
  • 平时在前端下载文件有三种方式,一种是后台提供一个 URL,然后用 window.open(URL) 下载,或者window.location.href(URL),另一种就是后台直接返回...后台返回数据二进制文件: 具体方法: axios({ method: 'po
  • 使用二进制写入模式(‘wb’)来开启待操作文件,而不能像原来那样,采用字符写入模式(‘w’)。 同时适配Python3和Python2的方法: with open(file_name + '.wav', 'wb') as f: f.write(data) 文件读取数据...
  • I have a bunch of hex values and I have to convert it into binary data before write them into a file.I trasformed the hex string in an array of integers, then I convert each integer to a char:// bytes...
  • http://www.xueyusi.com/linux-admin/linux-command-selected-xxd.htmlxxd [options] [infile [outfile]]xxd -r[evert] [options] [infile [outfile]]xxd命令用于用二进制或十六进制显示文件的内容,如果没有指定...
  • 二进制文件替换数据

    2021-01-29 08:46:22
    昨天一个好朋友,找我帮忙:说想定向的修改二进制文件指定位置的数据,希望我能写个脚本,通过某个 csv 文件里面的 定位数据,和对应值,以及数位长度进行修改。要处理的数据文件:替换的数据:csv文件的数据:问了好...
  • AJAX传输二进制数据

    2021-08-06 08:16:41
    FormData对象将整个表单元素映射成一个对象,可实现自动拼接表单对象数据成请求参数的格式可以上传二进制数据利用FormData上传文本数据的表单:前端网页核心代码: 用户名 = 密码 = "use strict"var myform = ...
  • 最近在解析 png 数据文件, 发现一个文件操作中容易忽略的问题,问题描述如下:在使用 fread 读二进制文件(png 图片)的时候, 发现读取到内存中的数据和 二进制文件中的数据不一致, 同样, 在使用 fwrite 写二进制...
  • 历史上,JavaScript无法处理二进制数据。如果一定要处理的话,只能使用charCodeAt()方法,一个个字节地从文字编码转成二进制数据,还有一种办法是将二进制数据转成Base64编码,再进行处理。这两种方法不仅速度慢,...
  • 1、需求说明,实现细节要求:解析二进制文件 files\case10\binary,其中包含一个字符串和一张图片,数据文件格式为字符串数据长度(2字节)+字符串内容+图片数据长度(4字节)+图片数据,数据长度均为数据字节长度,高位...
  • // BinaryStorageData.cpp : Defines the ...//-- 要想将结构体变量数据存储进文件中,结构体中不能有指针类型成员 struct CStudent { TCHAR szName[10]; int iAge; }; #define FILEPATH _T("struct.bin") int _tma

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 857,320
精华内容 342,928
关键字:

二进制数据文件