Matlab学习随笔 ——bin文件读写

一、概述

今天写这篇文章的目的在于最近遇到了需要使用Matlab读写文件,来分析FPGA使用高速ADC采集数据的频谱。之前没有怎么用过Matlab,更对文件操作不熟悉。临时抱佛脚学习了下Matlab,特此记录下以免以后遗忘了。

二、代码分析

在Matlab里要操作文件,需要实例化一个文件句柄,调用函数fopen();

fp = fopen(filename, permission);

该函数有两个参数,filename是文件名,permission参数是文件访问类型。具体的参数可以到官网参看(https://ww2.mathworks.cn/help/matlab/ref/fopen.html)。

实例化了文件句柄以后,可以对文件经行读写操作了。对文件写操作需要调用fwrite()函数;

fwrite(filename, A, precision);

fwrite()函数具有三个参数,filename 是文件名称, A是写入的值, precision为写入的形式(可以实int,char等类型)。详情见https://ww2.mathworks.cn/help/matlab/ref/fwrite.html

对文件读操作调用fread()函数;

fread(filename, sizeA, precision);

fread()可包含三个参数,filename:文件名,sizeA:读取数据个数,precision:数据形式。详情见官网https://ww2.mathworks.cn/help/matlab/ref/fread.html

对文件操作完成后需要释放文件句柄,调用fclose()即可。

三、详细代码

clear all;
clc;

filename = 'D:\work\Matlab\fft_test\test_d.bin';

%向bin文件写入100个数,初始化data
data = zeros(1,100);

%data
for k = 1:98
    data(1, k) = k;
end

data(1,99) = -100;      %第99个数写入-100
data(1, 100) = -10;

s = int16(data);

fp = fopen(filename, 'wb');

fwrite(fp, s, 'int16');
fclose(fp);


fp = fopen(filename, 'rb');

b = zeros(16,1);

b  = fread(fp, 100,'int16');

fclose(fp);

 

  • 3
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要使用MATLAB读取16进制的bin文件,可以按照以下步骤操作: 1. 在MATLAB命令窗口中,使用`fopen`函数打开16进制的bin文件,并将其关联到一个文件句柄。例如: ``` fid = fopen('filename.bin','r'); ``` 这里的'filename.bin'是你要读取的16进制的bin文件文件名。 2. 使用`fread`函数从文件中读取数据。由于文件是以16进制格式存储的,因此可以通过指定读取的数据类型为'uint8'来保留16进制格式的数据。例如: ``` data = fread(fid, inf, 'uint8'); ``` 这里的'inf'表示读取文件中的所有数据。 3. 关闭文件句柄。使用`fclose`函数关闭之前打开的文件句柄。例如: ``` fclose(fid); ``` 现在,你可以在MATLAB中使用变量`data`来处理读取到的16进制数据了。根据具体情况,你可以将`data`转换为其他数据类型,如整数、浮点数等,以便进一步分析或处理。 需要注意的是,读取的16进制数据可以通过`dec2hex`函数转换为十六进制字符串形式,方便查看和处理。例如: ``` hexData = dec2hex(data); ``` 以上是使用MATLAB读取16进制bin文件的基本方法。根据具体的需求和文件格式,可能还需要进行一些额外的操作和处理。 ### 回答2: Matlab可以通过使用fread函数来读取16进制的bin文件。 首先,需要打开要读取的16进制bin文件。例如,假设文件名为"file.bin",可以使用fopen函数打开文件: fid = fopen('file.bin','r'); 第一个参数'file.bin'表示要打开的文件名。第二个参数'r'表示以只读方式打开文件。 接下来,可以使用fread函数来读取文件中的数据。这个函数有多种用法,根据需要选择合适的用法。例如,如果要读取整个文件的内容,可以使用以下代码: data = fread(fid, inf, 'uint8'); 第一个参数fid是文件标识符,表示要读取的文件。第二个参数inf表示要读取的元素个数,'uint8'表示每个元素的数据类型为无符号8位整数。 最后,使用fclose函数关闭文件。完整的代码如下: fid = fopen('file.bin','r'); data = fread(fid, inf, 'uint8'); fclose(fid); 这样,文件中的数据就会存储在变量data中,可以根据需要进行进一步处理或分析。 需要注意的是,根据实际情况可能需要调整代码中的数据类型或参数,以适应特定的16进制bin文件格式。 ### 回答3: 在MATLAB中,可以通过以下步骤读取16进制的bin文件: 1. 打开bin文件:使用fopen函数打开bin文件并返回文件标识符。例如,可以使用以下代码打开一个名为file.bin文件: fid = fopen('file.bin', 'rb'); 2. 读取bin文件内容:使用fread函数读取bin文件中的数据。根据数据类型的不同,可以选择读取为16进制字符或数值。例如,如果bin文件中包含16进制字符,则可以使用以下代码读取: data = fread(fid, inf, 'uint8=>char'); 如果bin文件中包含16进制数值,则可以使用以下代码读取: data = fread(fid, inf, 'uint16'); 3. 关闭bin文件:使用fclose函数关闭文件,释放文件标识符。例如,可以使用以下代码关闭bin文件: fclose(fid); 读取完bin文件后,可以根据实际需要对数据进行进一步处理和分析。例如,可以将读取的数据保存到其他格式的文件中,或者进行数值计算和统计分析。 值得注意的是,读取bin文件时需要根据文件的具体格式和数据类型进行相应的设置。在使用fread函数时,可以根据需要调整输入参数,并根据数据类型选择合适的数据格式。 希望以上解答能够帮助到您读取16进制的bin文件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值