您的位置:首页 > 编程语言 > MATLAB

MATLAB文件操作(1)

2008-08-21 09:56 232 查看
5.2.4 输入输出语句
(1) 实时交互输入输出
input;keyboard
(2) 完全复制式的文件存取
*1) save
save
save '文件名' x
save '文件名' x y z
save '文件名' x y z –ascii
save '文件名' x y z –ascii –double
save '文件名' x y z –ascii –double –tabs
save '已有文件名' x y z –append

注1:save 的默认文件名是 fname.m
注2:–ascii 8字节 ascii码方式
注3:–ascii 16字节 ascii码方式
注3:–ascii –double –tabs 格式排列
注3:–append 续后存放

*2) load
load
load '文件名'

注1:load 的默认文件名是 fname.m

(3) 文件存取管理(建立与读写)
文件管理(打开、写入、读出、关闭、定位),

*1)“fopen”打开文件,赋予文件代号。
语法1:FID= FOPEN(filename,permission)
用指定的方式打开文件
FID=+N(N是正整数):表示文件打开成功,文件代号是N.
FID=-1 : 表示文件打开不成功。
FID在此次文件关闭前总是有效的。
如果以读方式打开,matlab首先搜索工作目录,其次搜索matlab的其他目录,“permission”是打开方式参数。
打开方式参数由以下字符串确定:
r 读出
w 写入(文件若不存在,自动创建)
a 后续写入(文件若不存在,自动创建)
r+ 读出和写入(文件应已存在)
w+ 重新刷新写入,(文件若不存在,自动创建)
a+ 后续写入(文件若不存在,自动创建))
w 重新写入,但不自动刷新
a 后续写入,但不自动刷新

文件的存储格式:文件打开的默认方式是:二进制。以文本方式打开,可以在方式参
数“permission”中加入“t”文件将,如“rt”,“wt+”

语法2:[fid,message]= FOPEN(filename,permission)
FID=-1 ,文件打开不成功时,返回错误信息

语法3:[fid,message]= FOPEN(filename,permission,machineformat)
permission: 用指定的方式打开文件。
machineformat: 指定读写时用的数据格式。
数据格式(machineformat)取值如下
'native' or 'n' Local machine format - the default
'ieee-le' or 'l' IEEE 浮点数( little-endian byte ordering)
'ieee-be' or 'b' IEEE 浮点数( big-endian byte ordering)
'vaxd' or 'd' VAX D 浮点数 (VAX ordering)
'vaxg' or 'g' VAX g 浮点数 (VAX ordering)
'cray' or 'c' Cray 浮点数 (big-endian byte ordering)
长型数据
'ieee-le.l64' or 'a' IEEE 浮点数(little-endian byte ordering和64 位)
long data type
'iecc-be.l64' or 's' IEEE 浮点数(big-endian byte ordering和64 位)
long data tw

语法4: [filename,permission,machineformat]=fopen(fid)。
查看打开文件的情况返回文件名、打开方式、文件格式。如果fid不存在,则返回变量。
fid=fopen('allall')
返回当前所有打开的文件。

*2)“fwrite”以二进制形式,向文件写入数据。
语法1:count=fwrite(fid,a,precision)
将矩阵a 写入fid指向的打开的文件,matlab 自动将a元值转换成precision规定的精度(见后),写成列的形式。count是返回值,写入成功,返回写入数据个数,否则返回0。

语法2:count=fwrite(fid,a,precision,skip)
skip:取正整数n ,
将矩阵a 以步长n 跳选数值写入fid指向的打开的文件,例如,a=1,2,3,4,5,6,7,8,9 ;skip=2; 则输入 _,_,3,_,_,6,_,_,9。这对非连续数据场,定长插入数据极有意义。

*3)“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

*4)从文件中有格式地读数据 fscanf
语法1:[a,count]=fscanf(fid,format,size)
根据指定的格式从fid 文件按照格式format读出数据并按size的格式放入内存。
a :读出的数据放入内存的变量名
count :返回值。0:失败、n>0:成功,n是读出数据个数。
fid :文件号
size :a的数据的格式
N : 列向量
inf : 读出文件全部数据
[M,N] : 读出数据以M*N的格式放入变量名a内
format :读出数据的格式
format是字符形式,与C语言基本相同。字符形式中有“%”与字符集(d,i,o,u,x,e,f,g,s,c,…)搭配构成。
如: %s:单字符读
%c:读space字符
例:s=fscanf(fid,'%s') 返回一个字符。
a=fscanf(fid,'%5d') 返回一个五位十进制整数。

*5)关闭文件 fclose
语法1:fclose(fid)
语法2:fclose('all')

*6)向文件写数据 printf
语法1:count=printf(fid,format,a,b,s,……)
例:
x=0:0.1:1;
y=[x;exp(x)];
fid=fopen('exp.txt','w')
fprintf(fid,'%6.2 %12.8f/n',y);
计算结果:
0.0 1.00000000
0.1 1.10517092

1.00 2.71828183

*8) 指针放到文件头:frewind
语法1:frewind(fid)

, hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'">以下precision(精度)规定读出指定的体积n。
'bitN' N字节数,整型数 1<=N<=64
'ubitN' N字节数, 1<=N<=64

*4)从文件中有格式地读数据 fscanf
语法1:[a,count]=fscanf(fid,format,size)
根据指定的格式从fid 文件按照格式format读出数据并按size的格式放入内存。
a :读出的数据放入内存的变量名
count :返回值。0:失败、n>0:成功,n是读出数据个数。
fid :文件号
size :a的数据的格式
N : 列向量
inf : 读出文件全部数据
[M,N] : 读出数据以M*N的格式放入变量名a内
format :读出数据的格式
format是字符形式,与C语言基本相同。字符形式中有“%”与字符集(d,i,o,u,x,e,f,g,s,c,…)搭配构成。
如: %s:单字符读
%c:读space字符
例:s=fscanf(fid,'%s') 返回一个字符。
a=fscanf(fid,'%5d') 返回一个五位十进制整数。

*5)关闭文件 fclose
语法1:fclose(fid)
语法2:fclose('all')

*6)向文件写数据 printf
语法1:count=printf(fid,format,a,b,s,……)
例:
x=0:0.1:1;
y=[x;exp(x)];
fid=fopen('exp.txt','w')
fprintf(fid,'%6.2 %12.8f/n',y);
计算结果:
0.0 1.00000000
0.1 1.10517092

1.00 2.71828183

*8) 指针放到文件头:frewind
语法1:frewind(fid)

function initUD(){
UD.body=$("_$$_inner_layer");
UD.layer=$("_$$_outer_layer");
UD.window=$("blog-163-com-body");
UD.bar=$("theme_selector_pointer");
}

// var g_urlPrefix="";
function g_initCommon(){
var _arr = ["rmdtpxt","rmdtplgn"];
for (var i=_arr.length-1;i>=0;i--){
_o = $(_arr[i]);
if(i==0)_o && (_o.onclick=function(){exitAfterLogged();return false;});
else if(i==1)_o && (_o.onclick=function(){showLoginDlg('drh00.blog.163.com');return false;});
}
topFromUrsLogin();
}
function g_initUtil(){
TopSearch.init();
}
// ]]>



function initAll(){
try{
initUD();
g_initCommon();
initFlash(0);
showPageTopBar({serverName:'drh00.blog.163.com',serverHostName:'blog.163.com'});
initPage();
window.setTimeout("g_initUtil();",3000);
}catch(e){}
}
initAll();

var ver = new Date().getTime();
document.write('');

gLoadPermaLink(1, 'prev', 'fks_084066084087085075082084084095082081081071084082', 20, -100,
'MATLAB文件操作相关命令', 'blog/static/670404200812894133176', '670404200812894133176', 'http://q.163.com',
0, 1, 'off'
);

topFromUrsLogin();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: