一、概述
今天写这篇文章的目的在于最近遇到了需要使用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);