MATLAB如何读取和解释.bin文件中的二进制数字?

时间:2013-05-09 14:42:01

标签: matlab binary

我有一个扩展名为.bin的二进制文件。该文件由数据采集软件创建。基本上,“测量计算”16位数据采集硬件从换能器接收信号(在放大器放大之后)并通过USB将其发送到PC。然后,程序/软件从数据aq生成对应的接收到的串行数据的.bin文件。硬件。有几种方法可以读取这个.bin文件并在MATLAB中绘制信号。

当我用hexeditor打开这个.bin文件时,我可以看到ASCII或1和0(二进制)。事情是我不知道如何解释这些知识。在16秒内获得的文件中有208000个字节。我认为每个2字节对应一个样本,因为DAQ设备具有16位分辨率。所以我想例如一个16位数据,如1000100111110010,由MATLAB转换为相应的电压电平。但是我尝试打开两个不同电压等级的不同.bin文件,例如1V和9V,但是数字似乎与我的想法无关。

MATLAB如何读取和解释.bin文件中的二进制数字?

日Thnx,

1 个答案:

答案 0 :(得分:1)

假设您的.bin文件只是转储所记录的值,您可以使用fread读取数据(有关详细信息,请参阅the documentation):

fid = fopen('path_to_your_file', 'r');
nSamples = 104000;
data = fread(fid, nSamples, 'int16');
fclose(fid);

但是,您还需要知道此数据是已签名还是未签名 - 如果未签名,则可以使用'uint16'作为fread的第三个参数。你还应该知道它是big-endian还是little-endian ......你应该查看原始程序的源代码。

记录您进行此类收购的采样率是一个好主意,因为在不知道这些信息的情况下,您将很难做任何事情,但之后会对其进行微不足道的分析。通常这种数据存储在.wav文件中,因此数据及其采样率(实际上是位深度)都存储在文件中。这样你就不需要单独的纸张来处理文件了(同样,在MATLAB中读取.wav文件非常简单)。