关于二进制文件直接跳跃读取
一个3维数组, 比如A(m,n,k), 想直接读取某个下标的一维数据A(i,j,:)以前的做法是读取整个数组, 然后再抽取.
有没有办法直接跳跃读取, 因为间隔是知道的, Matlab 里面 fread 有个 fread(fileID,sizeA,precision,skip,machinefmt), 其中skip 就是间隔跳跃
如果用流文件读取倒是可以
do i=1,k; read(99,pos=?)A(i,j,?); end
可否直接读取不用循环
文本文件不行。 li913 发表于 2023-11-15 12:58
文本文件不行。
不是文本文件,纯粹是二进制文件 用循环就好了。
如果嫌麻烦,可以自己根据需要把循环写在一个函数里,甚至函数名也可以叫 fread。
如果你是觉得循环比较慢,那么matlab的fread函数内部,应该也是用了循环的。 fcode 发表于 2023-11-15 19:16
用循环就好了。
如果嫌麻烦,可以自己根据需要把循环写在一个函数里,甚至函数名也可以叫 fread。
如果你是 ...
其实还是看数据大小, 数组不大的话, 整体读取, 再抽取也比循环快, 但数据大了, 比如10M以上, 循环就要快些
页:
[1]