文件处理系统
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用来判断输入变量个数的函数。可以针对不同的输入参数个数执行不同的功能。通常用它来设定一些默认值。