现在的位置: 首页 > 综合 > 正文

MATLAB混合编程中的数据交流

2018年04月03日 ⁄ 综合 ⁄ 共 2459字 ⁄ 字号 评论关闭

二、MATLAB混合编程中的数据交流

1、文件的打开和关闭

    [f, message] = fopen(‘filename’,‘mode’);

其中,f返回文件标志,通常为非负整数;message返回无法打开文件的原因。Filename为文件名,mode为对文件处理的方式,如:

mode

意义

rt

只读方式打开

wt

只写方式打开

at

追加方式,原文件后面续写

r+t

读写方式打开

w+t

读写创建,原文件被清除

a+t

读和追加方式

At

读写方式打开或创建,磁带介质文件

Wt

写入方式打开或创建,原文件清除磁带介质文件

    fclose(f)或者fclose all;f为标志,如fopen。

2、文本数据(ASCII)

导入模板:

file→Import Data

分隔符:

space(空格)、comma(,)、semicolon(;)、ab或其他字符。

读取函数比较:

函数

数据类型

分隔符

返回值

csvread

数值

1

dlmread

数值

任何字符

1

fscanf

字母和数值

任何字符

1

load

数值

Space

1

textread

字母和数值

任何字符

多返回值

    textread调用方法:

[A,B,C,……]=textread(‘filename’,‘format’);

或[A,B,C,……]=textread(‘filename’,‘format’,N);

%s和%f:读入字母和数值;%*s和%*f:不读。

数据存写函数:

名称

适用数据

分隔符

csvwrite

数值

diary

数值或单元阵列

空格

dlmwrite

数值

任何字符

fprintf

字母和数值

任何字符

save

数值

制表符或空格符

3、二进制数据

导入模板:file→Import Data

    导入或导出函数,如:

函数名称

文件扩展名

数据格式

load、save

.mat

MATLAB下的MAT数据格式

aviread、aviwrite

.avi

AVI格式的音频视频数据

cdfread、cdfwrite

.cdf

CDF格式

hdf、hdf

.hdf

HDF格式

imread、imwrite

.bmp .cur .gif .ico .hdf

.jpg .pbm .pgm .png .pnm

.ppm .pcx .tif .xwd .ras

图形数据

wavread、wavwrite

.wav

Windows系统的声音文件

xlsread、xlswrite

.xls

Excel电子表格数据

    AVI格式存写MATLAB图像步骤:

用avifile函数建立一个AVI文件;

        用addframe函数来捕捉图像并保存到AVI文件中;

        使用close函数关闭AVI文件。

    将一个已经存在的MATLAB电影文件转换为AVI格式,需要使用函数movie2avi。

4、使用文件I/O函数

读取:A=fread(fid,[m n]);fid为整数型变量,由fopen函数获得;[m n]为返回矩阵的格式和大小,可直接为m。

写入:count=fwrite(fid,A,precision);f同上面的fid;count为返回写入文件数据的大小;A表示要写入的数据矩阵;precision表示写入格式。

fscanf函数与C语言中相似,能够从一个有格式的文件中读取数据,并将它赋给一个或多个变量。其格式转换符:

格式转换符

意义

%c

读取字符型变量,也可以指定多个字符,如%3c等

%s

读取字符串变量

           %d

读取整数型变量

%f

读取浮点数

%g

读取双精度浮点数

Fprintf将会把数据转换成字符串,并将它们输出到屏幕或文件中。

    每次打开文件时,MATLAB就会保持一个文件位置指针(File Position Indicator)。其控制函数:

名称

功能说明

fseek(fid,offset,origin)

设定指针位置

ftell(fid)

获得指针位置

frewind(fid)

重设指针到文件起始位置

feof(fid)

测试指针是否在文件结束位置

其中,fid是指定的文件标识符;offset为整数型变量,表示相对于指定位置需要的偏移字节数,正数向尾,负数向头;origin表示文件中的参考位置,如:

origin

说明

‘bof’或-1

文件开头

‘cof’或0

文件中当前位置

‘eof’或1

文件末尾

而函数feof函数,当到达文件末尾时,返回值为1,否则为0。

5、MAT文件

    MAT文件时MATLAB使用的一种特有的二进制数据文件。可以包含一个或者多个MATLAB变量。提供了一种更简便的机制在不同操作平台之间移动MATLAB数据。

    在MATLAB环境中,通常使用load和save两个命令进行MAT文件的读和写。在使用load是,也可以使用类如load mymat.mat y*来读取以y开头的变量。而在使用save时需要保存某几个变量时,可直接在后面写上变量名,用逗号隔开就行。

    在普通的C/C++程序中读写MAT文件:

法一、利用MATLAB提供的有关MAT文件的编程接口函数,如:

matOpen

打开MAT文件

matClose

关闭MAT文件

matGetDir

从MAT文件中获得MATLAB阵列的列表

matGetFp

获得一个指向MAT文件的ANSI C文件指针

matGetVariable

从MAT文件中读取MATLAB阵列

matPutVariable

写MATLAB阵列到MAT文件

matGetNextVariable

从MAT文件中读取下一个MATLAB阵列

matDeleteVariable

从MAT文件中删去下一个MATLAB阵列

matPutVariableAsGlobal

从MATLAB阵列中写入到MAT文件中

matGetVariableInfo

从MAT文件中读取MATLAB阵列头信息

matGetNextVariableInfo

从MAT文件中读取下一个MATLAB阵列头信息

法二、根据MAT文件结构,以二进制格式在C/C++中读入文件内容,然后解析文件内容,从而获得文件中保存的MATLAB数据。在安装路径下有名为matfile_format.pdf的文件,可以得到MAT文件结构。具体后面会讲。

抱歉!评论已关闭.