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

Matlab中的fread函数的更多相关文章

  1. python实现类似于Matlab中的magic函数

    参考这篇文章的代码封装了一个类似Matlab中的magic函数,用来生成魔方矩阵. #!/usr/bin/env python # -*- coding: utf-8 -*- import numpy ...

  2. matlab中的eval函数使用

    matlab中的eval函数使用 在matlab的命令行窗口中输入help eval命令回车就可以看到eval函数的官方解释,大概的意思就是执行matlab中的表达式,计算expression表示的代 ...

  3. Matlab中的eig函数和Opecv中eigen()函数的区别

    奇异值分解的理论参见下面的链接 http://www.cnblogs.com/pinard/p/6251584.html https://blog.csdn.net/shenziheng1/artic ...

  4. matlab中help所有函数功能的英文翻译

    doc funname 在帮助浏览器中打开帮助文档 help funname 在命令窗口打开帮助文档 helpbrowser 直接打开帮助浏览器 lookfor funname 搜索某个关键字相关函数 ...

  5. matlab中的sub2ind函数

    在matlab中,矩阵的存储是按列优先,sub2ind函数将矩阵中指定元素的行列下标转换成存储的序号,即线性索引号.下面,我们举例子进行说明. 1 建立一个3*4*2的矩阵 rng(0,'twiste ...

  6. matlab中CRC的函数使用

    先学习一下matlab中CRC函数. 语法如下: h = crc.generator(‘Polynomial', polynomial, ‘param1', val1, etc.) 再看一个例子就比较 ...

  7. MATLAB中的参数估计函数详解及调用示例【联合整理】

    前言 因为最近项目上的需要,才发现MATLAB的统计工具箱中的参数估计函数,觉得很简单很好用,现在把所有的参数估计函数整理一下,并在最后面附上调用示例. 参与人员 由于时间关系,这篇随笔是两个人一起整 ...

  8. Matlab中利用null函数解齐次线性方程组

    摘自:http://blog.csdn.net/masibuaa/article/details/8119032 有齐次线性方程AX=0,且rank(A)=r<n时,该方程有无穷多个解, 可以用 ...

  9. MATLAB中的set函数

    1.MATLAB给每种对象的每一个属性规定了一个名字,称为属性名,而属性名的取值成为属性值.例如,LineStyle是曲线对象的一个属性名,它的值决定着线型,取值可以是'-' .':'.'-.'.'- ...

随机推荐

  1. iOS之UI--辉光动画

    前言:学习来自YouXianMing老师的博客:<辉光UIView的category>以及YouXianMing老师的github源码:< GlowView >    而我个人 ...

  2. URL最大长度限制

    在开发调试支付宝接口时,突然发现支付宝接口的URL很长,远远大于之前自己印象中的255个字符.赶紧搜索查证了一番,理解如下: URL不能大于255bytes的说法确实存在,在RFC2616中提到: T ...

  3. 在js中获取get参数(仿PHP)

    复制粘贴即可..然后就可以在js中像PHP用$_GET['name']这样子获取get参数了!! /*--------------------(返回 $_GET 对象, 仿PHP模式)-------- ...

  4. 给你的Mr.Right画张择偶地图像

    爱一个人就算做不到爱他的全部,至少也应该尊重他的真实,而不是苛求他变成你想要的样子. 娶妻当娶郭芙蓉,经典语录.我是郭芙蓉,我不会武功,我来自江湖,我与众不同.再苦再累,就当自己是二百五,再难再险,就 ...

  5. ASP.NET动态加载用户控件的方法

    方法是使用LoadControl方法,根据用户控件的相对路径,动态生成用户控件对象 用户控件 public class UserControlA :UserControl { public UserC ...

  6. SeekableByteChannel 和 FileChannel

    Java7中引入了SeekableByteChannel接口,允许我们定位到文件的任意位置进行读写.注意这里的写,不是新增式的插入,而是覆盖,当然在文件末尾的写,是新增. java.nio.chann ...

  7. SQL 统计表行数和空间大小

    CREATE TABLE #tablespaceinfo ( nameinfo VARCHAR() , rowsinfo BIGINT , reserved VARCHAR() , datainfo ...

  8. PHP递归创建多级目录(一道面试题的解题过程)

    今天看到一道面试题,要写出一个可以创建多级目录的函数: 我的第一个感觉就是用递归创建,具体思路如下: function Directory($dir){ if(is_dir($dir) || @mkd ...

  9. OS X下安装Redis及配置开机启动

    1.下载redis源码包redis-3.0.5.tar(此步骤可在图形界面下操作) 2.解压源码包 tar zxvf redis-3.0.5.tar 3.编译源码并安装 #进入源码目录 cd redi ...

  10. Semiconnected--强连通缩点

    1451: Semiconnected 时间限制: 1 Sec  内存限制: 32 MB 提交: 79  解决: 20 题目描述 For a directed graph G = (V, E), if ...