cqflhl 发表于 2023-11-15 11:53:37

关于二进制文件直接跳跃读取

一个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:32

文本文件不行。

cqflhl 发表于 2023-11-15 15:02:23

li913 发表于 2023-11-15 12:58
文本文件不行。

不是文本文件,纯粹是二进制文件

fcode 发表于 2023-11-15 19:16:31

用循环就好了。
如果嫌麻烦,可以自己根据需要把循环写在一个函数里,甚至函数名也可以叫 fread。
如果你是觉得循环比较慢,那么matlab的fread函数内部,应该也是用了循环的。

cqflhl 发表于 2023-11-15 20:00:57

fcode 发表于 2023-11-15 19:16
用循环就好了。
如果嫌麻烦,可以自己根据需要把循环写在一个函数里,甚至函数名也可以叫 fread。
如果你是 ...

其实还是看数据大小, 数组不大的话, 整体读取, 再抽取也比循环快, 但数据大了, 比如10M以上, 循环就要快些
页: [1]
查看完整版本: 关于二进制文件直接跳跃读取