matlab函数用法总结

文件处理

  • 系统

ispc用来判断当前的电脑系统是否是windows系统,是返回1,不是返回0

  • 文件路径
Currdir = fileparts(mfilename('fullpath'));
addpath(genpath(fullfile(Currdir, 'io')));
mkdir(fullfile(Currdir, 'io'));
dataset_path = fullfile(Currdir, 'dataset', );
if exist(dataset_path, 'dir') == 0
   error('dataset_path is missing; See README.md');
end

mfilename 表示正在运行的函数的路径

fileparts 则返回文件上层的文件夹路径

fullfile 则返回组合文件的全路径

genpath 递归的产生该文件夹下的所有文件的路径

addpath 把路径加入到工作区

exist 查看路径是否存在

mkdir 创建对应的文件夹

  • 文档读写相关
dir_dataset = dir(dataset_path);
lMask=cell2mat({dir_dataset(:).isdir});if(any(~lMask)), dataset_path(~lMask)=[]; end; %dir_dataset只保留子文件夹的信息
strnam = dir('dataset_path*.jpg'); %只保留dataset下jpg文件的信息

dir获取文件夹的相关信息,返回一个struct
strnam = dir('path*.#')中path是你想要获取的文件夹路径,*是通配符,#是你想获取的文件类型,比如jpg,返回文件夹下所有jpg文件的信息

fid=fopen(filename,permission);

fid=+N (N>0):文件打开成功,代号为N
fid=-1:文件打开失败
permission:'r'-读,'w'-写,'a''rt+''wt+''at+'

sp=sprintf('pi= %8.5f',pi); 		%生成格式化字符串stringprintformat
disp(sp); 				%->'pi=3.14159'(数字长度8位,小数点后5位,f小数形式)
fprintf(fid, format, A);			%生成格式化字符串到文件或显示屏fileprintformat

fid为文件句柄(default时为1,直接输出到命令行),指定要写入数据的文件

format是用来指定数据输出时采用的格式,与fscanf函数相同:

%d 整数

%e 实数:科学计算法形式

%f 实数:小数形式

%g 由系统自动选取上述两种格式之一

%s 输出字符串

A是用来存放数据的矩阵。

[A, count]=fscanf(fid,format,size)	%从一个文件中读取数据到A中,常用于画图
fid=fopen('d:num.txt');
data=fscanf(fid,'%f,%f,%f',[3,inf]) ;%这里得用单引号
fclose(fid);

size=[3,inf]文件d:num.txt内容如下:

13,1,3.4

3,2.1,23

data结果如下:

13,3

1,2.1

3.4,23

for d=1:3
   s = ['load August',int2str(d),'.mat']
   eval(s)
end

eval将字符串转换成可执行的语句并运行,上面的循环相当于下面3句话

load August1.mat
load August2.mat
load August3.mat
  • 正则表达式regexp

通用

  • 画图

  • 维度转换

  • 数据类型转换
    cell2mat(),num2str(),str2num(),unique(),cat()

    C = cat(dim, A, B)     	%按dim来联结A和B两个数组
    cat(2, A, B)			%-->[A, B]
    cat(1, A, B)			%-->[A; B]
    
  • 向量化编程bsxfun arrayfun cellfun structfun
    A = randi(10,3,2)%假设你有3组数据,每一组数据有2维
       7     7
       8     2
       8     8
    A_cell = num2cell(A,2)%先将其按行转化为cell
      [1x2 double]
      [1x2 double]
      [1x2 double]
    y_hat = cellfun(@(x) (x.*10) ,A_cell, 'UniformOutput', false)%这样就可用cellfun进行向量化处理了
      [1x2 double]
      [1x2 double]
      [1x2 double]
    y = cat(1,y_hat{:})%处理完成之后,又变换回原来的格式
      70    70
      80    20
      80    80
    

函数相关

  • 函数输入参数

nargin对应varargin的个数,是一个数值,而varargin用来存入输入变量,以元胞数组形式存储
nargout对应varargout的个数,是一个数值,而varargout用来存入输出变量,以元胞数组形式存储
nargin用来判断输入变量个数的函数。可以针对不同的输入参数个数执行不同的功能。通常用它来设定一些默认值。