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

Matlab使用函数解析之文件操作

2013-11-08 18:16 866 查看
【cd函数】

函数功能:切换到指定目录

【fullfile函数】

利用文件各部分信息创建[1]合成完整文件名。

用法:

fullfile('dir1', 'dir2', ..., 'filename')

f = fullfile('dir1', 'dir2', ..., 'filename')

解释:若文件'100.hea' 的路径为'D:\matalab\xindianshuju\wenjian\100.hea',那么

'dir1'='D:';'dir2'='matlab';'dir3'='xindianshuju';‘dir4'='wenjian';'filename'='100.hea'

【dir函数】

函数功能:获得指定文件夹下的所有子文件夹和文件,并存放在在一种为文件结构体数组中.

调用方式:

filelist=dir('.')列出当前目录下所有子文件夹和文件

filelist=dir('D:\Matlab')列出指定目录下所有子文件夹和文件

filelist=dir('*.m')列出当前目录下符合正则表达式的文件夹和文件

【mkdir函数】

【exist函数】

函数功能:一个参数和两个参数的,作用都是用于确定某值是否存在:

调用方式:

方式1. ret = exist( a)

0 不存在则返回值

1 name 可以是变量名,如果存在,返回值

2 函数名、m 文件名,存在则返回值

3 mex 文件、dll 文件,存在则返回值

4 内嵌的函数,存在则返回值

5 p码文件 , 存在则返回值

6 目录,存在则返回值

7 路径,存在则返回值

8 Java class,存在则返回值

方式2. ret = exist( 'name', 'kind')

kind 表示 name 的类型,可以取的值为:builtin(内建类型),class(类),dir(文件夹),file(文件或文件夹),var(变量)。

【addPath】

功能:调用处在不同文件夹的MATLAB函数 ,相当于File->Set Path->Add Folder;

举例:cmd的当前目录为E:\实验室\;该文件夹 包含了fun1.m文件和utils(sub_fun.m)文件夹,我们可以直接运行fun1.m,但不能运行sub_fun.m。必须加以下代码

addpath('utils');%把 E:\实验室\utils加入到搜索路径中

注意:windons系统采用"\"划分路径,在使用的时候要转化成"/"

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

uigetfile命令的应用

此函数的用法为

[FileName,PathName,FilterIndex] = uigetfile(FilterSpec,DialogTitle,DefaultName)

FileName:返回的文件名

PathName:返回的文件的路径名

FilterIndex:选择的文件类型

FilterSpec:文件类型设置

DialogTitle:打开对话框的标题

DefaultName:默认指向的文件名

例子:(接来自matlab的帮助)

1.最简单的形式,只设置了一种可选择的文件类型

[FileName,PathName] = uigetfile('*.m','Select the M-file');

2.设置多种文件类型

[filename, pathname] = ...

uigetfile({'*.m';'*.mdl';'*.mat';'*.*'},'File Selector');

3.可以为文件类型设置说明,注意书写格式

[filename, pathname] = uigetfile( ...

{'*.m;*.fig;*.mat;*.mdl','MATLAB Files (*.m,*.fig,*.mat,*.mdl)';

'*.m', 'M-files (*.m)'; ...

'*.fig','Figures (*.fig)'; ...

'*.mat','MAT-files (*.mat)'; ...

'*.mdl','Models (*.mdl)'; ...

'*.*', 'All Files (*.*)'}, ...

'Pick a file');

4.可返回选择的文件类型序号,并且可以设置文件多选,设置文件多选时注意,当只选了一个文件时,返回的filename为字符串,选择多个文件时,返回的元胞类型。

[filename, pathname, filterindex] = uigetfile( ...

{ '*.mat','MAT-files (*.mat)'; ...

'*.mdl','Models (*.mdl)'; ...

'*.*', 'All Files (*.*)'}, ...

'Pick a file', ...

'MultiSelect', 'on');

5.可以设置默认文件名

uigetfile({'*.jpg;*.tif;*.png;*.gif','All Image Files';...

'*.*','All Files' },'mytitle',...

'C:\Work\myfile.jpg')

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

【fileparts,which(mfilename)】

mfilename 返回当前正在运行的函数所在文件的文件名。

which:找出函数和文件的位置

举例

K>>which(mfilename)

ans =

E:\实验室\俊君师兄\计划\眼睛定位_人脸对齐\facedet\runfacedet.m

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

[pathstr, name, ext, versn] = fileparts(filename)

其中filename是要解析的文件的完整路径,例如:E:\games\IGI\bin\IGI.exe。fileparts将这个文件名(包含完整路径信息)各部分分别提取到四个变量中。

其中pathstr是这个文件的路径名,name是文件名,ext是包含一个点号文件的扩展名(指定了文件的类型)。matlab帮助文档中指明,第四个参数将在未来版本中舍弃。

【system】

在Matlab里可以通过system这个命令调出dos命令,比如:执行语句system('mkdir step1')就可以在当前目录下建立名为step1的文件夹!在实际编程中,可以结合函数exist使用。比如:

if exist('Step1') == 0

system('mkdir Step1');

end

即:先判断当前目录下是否以存在名为Step1的子目录(文件夹),如果不存在,则建立。

【dlmread】

dlmread:读取有分隔符的ASCII文件到矩阵函数

dlmread

读取有分隔符的ASCII文件到矩阵函数

图形接口

作为dlmread的替代,可以使用导入向导。可以从【File菜单】中激活导入向导。

语法

M = dlmread('filename')

M = dlmread('filename', delimiter)

M = dlmread('filename', delimiter, R, C)

M = dlmread('filename', delimiter, range)

描述

M = dlmread('filename') 从由filename指定的具有分割标志的ASCII文件中读取数值数据,使用一个分隔符作为格式化的文件的暗示信息。默认分隔符使用逗号(,)。

M = dlmread('filename', delimiter) 这里指定了分隔符。使用\t代表制表符tab分隔。

注意:当从格式文件推断分隔符时,连续的空格符作为一个分隔符对待。但是不同的是, 如果通过分隔符输入参数指定了分隔符,那么重复的分隔字符将分别作为单独的分隔符对待。

M = dlmread('filename', delimiter, R, C) R和C指定了数据在文件中的左上角位置。R和C的值从0开始。R = 0, C = 0指定了了文件中的第一个值,位于文件的左上角。

M = dlmread('filename', delimiter, range) 读取由range定义的区域块的数值,range = [R1 C1 R2 C2] 。也可以使用电子表格符号来指定,range = 'A1..B7'.。

备注

dlmread将用0填充没有边界的区域。有多行的数据文件,如果以非空格分隔符结束,例如分号,则在导入后将会多产生一行全0的列与最后。

dlmread在导入任何复数时,将作为一个整体导入一个复数单元中,转换实部和虚部到特定的数据类型。正确的复数格式为

±<real>±<imag>i|j 5.7-3.1i

±<imag>i|j -7j

嵌入了空格的复数是不正确的格式,空格将被认为是分隔符。

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

文件删除 delete

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

自带的结构体

imformats

IMFORMATS Manage file format registry.

FORMATS = IMFORMATS returns a structure containing all of the values in

the file format registry. The fields in this structure are:

ext - A cell array of file extensions for this format

isa - Function to determine if a file "IS A" certain type

info - Function to read information about a file

read - Function to read image data a file

write - Function to write MATLAB data to a file

alpha - 1 if the format has an alpha channel, 0 otherwise

description - A text description of the file format

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

【mex】

函数功能:是要通过使用MEX文件,MEX文件使得调用C函数和调用Matlab的内置函数一样方便。MEX文件是由原C代码加上MEX文件专用的接口函数后编译而成的。可以

这样理解,MEX文件实现了一种接口,它把在Matlab中调用函数时输入的自变量通过特定的接口调入了C函数,得出的结果再通过该接口调回Matlab。

调用方式:

如果我有一个用C语言写的函数,实现了一个功能,如一个简单的函数:

double add(double x, double y)

{

return x + y;

}

现在我想要在Matlab中使用它,比如输入:

>> a = add(1.1, 2.2)

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