Matlab中的fread函数
Matlab中fread函数用法
“fread”以二进制形式,从文件读出数据。
语法1:[a,count]=fread(fid,size,precision)
语法2:[a,count]=fread(fid,size,precision,skip)
size: 不指定 :到尾返回读。
N : 读出N个数据,构成列向量。
inf : 读出fid指向的打开的文件的全部数据。
[M,N] : 读出N个数据,构成列向量,填入M*N矩阵
precision(精度)
precision(精度)规定了以浮点数、整型数、字符读出时位。matlab 的precision(精度)的表达式与c语言、fortran语言、是一致的。不规定precision(精度),则字符默认为: ucher、则数值默认为:双精度 。
以下precision(精度)将保证读出具有一致的体积。
MATLAB C or Fortran Descriphon(精度)
'char' 'char*l' 8 位,字符型
'uchar' 'unsigned char' 8 位
'schar' 'signed char' 8 位,字符型
'int8' 'integer*1' 8 位,整型数
'intl6' 'integer*2' 16 位,整型数.
'int32' 'integer*4' 32 位,整型数.
'int64' 'integer*8' 64 位,整型数
'uint8' 'integer*l' 8 位
'uintl6' 'integer*2' 16 位
'uint32' 'integer*4' 32 位
'uint64' 'integer*8' 64 位
'float32' 'real*4' 浮点数, 32 位
'float64' 'real*8' 浮点数, 32 位
以下precision(精度)将不保证读出具有一致的体积。
MATLAB C or Fortran Descriphon(精度)
'short' 'short' 16 位,整型数
'int' 'int' 32 位,整型数
'long' 'long' 32 (64) 位,整型数
'uShort' 'Unsigned short' 16 位
'uint' 'Unsigned int' 32 位
'ulong' 'unsigned long' 32 (64) 位
'float' 'float' 浮点数, 32 位
'double' 'double' 浮点数, 64 位
以下precision(精度)规定读出指定的体积n。
'bitN' N位,整型数 1<=N<=64
'ubitN' N位, 1<=N<=64
fread 使用注意
值得注意的是,fread是一列一列地填满A的。例如:
假设一个不换行的文件里含有:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ,
想要输入matlab时,令其这样排:
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
则fread应该写成:A=fread(fid,[5,3]),得到:
1 6 11
2 7 12
3 8 13
4 9 14
5 10 15
然后再转置,就能得到正确结果了。
如果错误地写成A=fread(fid,[3,5]),则得到
1 4 7 10 13
2 5 8 11 14
3 6 9 12 15
显然即使转置也得不到正确结果。
另外,对于指定了precision的指令,如:A=fread(fid,[5,3],'short=>double'),
程序就会在文件中,以两个字节为单位提取原文件后变为8字节来填满A(因为short是2字节,double是8个字节)。
precision的缺省格式(即不显示时)为:‘uchar=>double’,所以程序默认是以字节为单位提取原文件数据后变为8字节来填满A的。
如A是一个字符串
那么直接fread读取A
>>fread(A)
那么读取到的是A中每个字母的ASCii码值!
再如B是一个字符串
那么fread(B) 将会是把每个字母单独做一行输出,而fread(B)' 转置则会把字母作为一列输出一直遇到回车键才换行!
实际案例:
B ='Who is this? \n is me!'
>>fread(B,'unit8=>char')
输出
W
h
o
[]%空格
i
s
[]
t
h
i
s
?
\
n
[]
i
s
[]
m
e
!
如果是:
>>fread(B,'unit8=>char')'
Who is this ? %遇到回车符换行
is me!
看到了吧,就是转置时 遇到了回车符那它就自动换行了,如果是没有转置, 则是一个字符一个字符读取那么分开读取\ 和n 则没有转义功能了,再说单字母成列也不需要“回车”了。
此外可参考博文:http://blog.csdn.net/fall221/article/details/7299712
转载于:https://www.cnblogs.com/AI-Algorithms/p/3670982.html
Matlab中的fread函数相关推荐
- matlab fopen函数的用法,matlab中关于fread函数的用法
公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:matlab中关于fread函数的用法 问题详情:用fread打开一个时,需要不需要把开放在某个特回答:必须在Matlab可以搜索的 ...
- matlab randi 函数,MATLAB中的randi函数
randi Pseudorandom integers from a uniform discrete distribution.来自一个均匀离散分布的伪随机整数 R = randi(IMAX,N) ...
- Matlab中的lsqcurvefit函数的使用
Matlab中的lsqcurvefit函数的使用 lsqcurvefit函数 调用示例 lsqcurvefit函数 非线性曲线拟合是已知输入向量xdata和输出向量ydata,并且知道输入与输出的函数 ...
- Matlab:Matlab中常用的函数、案例详细攻略
Matlab:Matlab中常用的函数.案例详细攻略 目录 常用函数 1.与文件相关 2.MATLAB GUI不同控件函数间变量传递方法 常用函数 Matlab中的bwmorph函数解释 bwmorp ...
- matlab作动态函数曲线图,[转载]Matlab中使用Plot函数动态画图方法总结
本帖最后由 sonictl 于 2012-12-31 12:18 编辑 请删除我 清楚超靠靠靠 没办法,一会儿限制这不能发表,那不能发表的.... [转载]Matlab中使用Plot函数动态画图方法总 ...
- python实现Matlab中的circshift函数
circshift是Matlab中矩阵循环移位函数,具体使用参照该链接. 但是python中并没有封装好的该函数,因此需要自己实现. 思路:将矩阵分为两部分,然后按照自己的需要堆叠在一起就可以了. n ...
- matlab的数学函数,matlab中常见数学函数的使用
matlab中常见数学函数的使用 MATLAB 基本知识 Matlab 的内部常数 pi 圆周率 exp(1) 自然对数的底数 e i 或 j 虚数单位 Inf 或 inf 无穷大 Matlab 的常 ...
- matlab里inline定义矩阵,Matlab中的inline函数_matlab中inline函数
Matlab中的inline函数 1.有时为了描述某个数学函数的方便,可以用inline()函数来直接编写该函数,形式相当于M-函数,但无编写一个真正的MATLAB文件,就可以描述出某种数学关系.其调 ...
- Matlab中的eig函数和Opecv中eigen()函数的区别
奇异值分解的理论参见下面的链接 http://www.cnblogs.com/pinard/p/6251584.html https://blog.csdn.net/shenziheng1/artic ...
最新文章
- HttpHandler与HttpModule区别
- 研究生跟了一个很棒的导师,是什么神仙体验?
- 【Network Security!】5次Shift漏洞和PE系统
- Remoting 与 Webservice 的区别
- libsvm使用心得
- 世界各国的教育差距有多大?这几部全世界都在热议的教育纪录片,揭开一切.........
- sql 链接到oracle数据库,通过MSSQL连接服务器连接至Oracle数据库
- php new static 效率,PHP中new static()与new self()的比较
- postgres 把一个表的值转成另一个表的字段名_用LUT来做一个可动态配置的卷积核...
- 安卓暗黑模式软件_安卓微信暗黑模式(深色模式)怎么开启?手机什么条件才支持?...
- python函数的组成要素_写好一个Python函数的六要素
- Ecliplse安装tomcat插件
- Lwip的udp编程
- 光纤模块和光纤收发器匹配问题
- AttnGAN代码复现(详细步骤+避坑指南)文本生成图像
- 将lol人物模型导入到Unity3d
- 怎样修改word页面页码
- VirtualBox安装Win7后提示无法启动,以及0xc0000225错误的解决
- 将其他图片转换为ico图片
- Asp.net Core 6.0 之动态修改Cshtml(发布篇)