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--指示器HUD的创建和设置

    指示器的创建和设置 渐变动画 描述: 使用label就能制作指示器,原理:就是让label以动画的形式慢慢显示和消失 最好是半透明的 指示器有时候也被称为:HUD,遮盖,蒙版 思路步骤: 1.先在st ...

  2. javascript的模块化解读

    AMD是RequireJS在推广过程中对模块定义的规范化产出. 异步加载模块,依赖前置,提前执行. Define定义模块 define(['require','foo'],function(){ret ...

  3. navicat 连接sqlserver提示要安装 sql server native client

    navicat 连接sqlserver提示要安装 sql server native client 解决方法:其实navicat自带sqlncli_x64.msi,就在安装目录下,安装后问题解决!

  4. linux64位操作系统装32位jdk解决方法

    /opt/tomcat/tomcat7.0/bin/catalina.sh: /usr/local/java/jdk1.7.0_79/bin/java: /lib/ld-linux.so.2: bad ...

  5. 记录JVM垃圾回收算法

    垃圾回收算法可以分为三类,都基于标记-清除(复制)算法: Serial算法(单线程) 并行算法 并发算法 JVM会根据机器的硬件配置对每个内存代选择适合的回收算法,比如,如果机器多于1个核,会对年轻代 ...

  6. class的继承,从基类开始

    #include <iostream> #include <stdio.h> using namespace std; class A { public: A() { puts ...

  7. mysql、sql server、oracle数据库分页查询及分析(操作手册)

    1.mysql分页查询 方式1: select * from table order by id limit m, n; 该语句的意思为,查询m+n条记录,去掉前m条,返回后n条记录.无疑该查询能够实 ...

  8. Mongodb 字段类型转换

    db.diningmembers.find({modifedDate:{$type:9}}).forEach(function(x){x.tel = String(x.tel);db.diningme ...

  9. Loj 1003–Drunk(拓扑排序)

    1003 - Drunk PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 MB One of my fr ...

  10. 树形DP codevs 1814 最长链

    codevs 1814 最长链  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 钻石 Diamond 题目描述 Description 现给出一棵N个结点二叉树,问这棵二叉树中 ...