MATLAB中常用到的函数整理(持续更新)

更新时间:2020-01-04。
更新内容:line();cell和struct的创建和使用。

1. 文件操作

1.1 fullfile()

功能:Build full file name from parts
例子:

1.2 strcat()

功能:Concatenate strings horizontally。通常用在连接两个字符串,比如:输出文件时批量对文件进行命名。此外,可以使用[Hello Word!]或者[Hello,Word!]的方式完成相同效果的操作。
例子:

>> A='Hello'
A =
Hello 
>> B='Word'
B =
Word
>> C=strcat(A,B)
C =
HelloWord
>> C
C =
HelloWord

1.3 dir()

功能:List folder contents
例子:

%% test for dir function
clc;clear;
files=dir('G:\2_Dataprocessing\4_PPT\DataProcessingCode\Methods4PPT\VPMGPP2001TO2016Excel\*.xlsx');

结果:
16×1 struct
得到的结果是一个结构体
注意:
文件的路径需要用'符号起来

1.4 length()

功能:Length of largest array dimension
理解:对Length of largest array dimension的理解为:获取矩阵的最大维度(1个数)
例子:

>> length(files)%files是一个16×1的struct
ans =
    16

1.5 mkdir()

功能:Make new folder
例子:

%% Make new folder
mkdir('G:\2_Dataprocessing\4_PPT\DataProcessingCode\','Test4mkdir')%可以增加父节
mkdir('Test4mkdir_New')%生成的文件夹和程序在一个文件夹下

——————————————————————分割线——————————————————————

2. 矩阵操作

2.1 fliplr()

功能:将数组从左向右翻转(沿垂直方向翻转)
例子:

A=(1:5)
B=fliplr(A)

结果为:

A =
     1     2     3     4     5 
B =
     5     4     3     2     1

——————————————————————分割线——————————————————————

2.1 size()

功能:获取矩阵的大小(在对文件进行循环操作时,非常好用)
例子:

%% test for dir function
clc;clear;
files=dir('G:\2_Dataprocessing\4_PPT\DataProcessingCode\Methods4PPT\VPMGPP2001TO2016Excel\*.xlsx');
filenum=size(files,2);

注意:
size()有一个很好用的地方就是,它能够使用size(A,1)得到矩阵A行数,使用size(A,2)得到矩阵A列数

2.3 xlsread()

功能:将Excel读取为矩阵
例子:

%% test for dir function
clc;clear;
RawData=xlsread('G:\2_Dataprocessing\4_PPT\DataProcessingCode\Methods4PPT\VPMGPP2001TO2016Excel\2001.xlsx');

需要注意:
用以下方式,直接想获得Excel中的行和列,是不正确的:

%% test for dir function
clc;clear;
[row,col]=xlsread('G:\2_Dataprocessing\4_PPT\DataProcessingCode\Methods4PPT\VPMGPP2001TO2016Excel\2001.xlsx');

正确的方法是:

  1. 先将Excel读取进来给一个变量;
  2. 再用size()求这个变量的行列数;

————————————————————更新20191230—————————————————————
之前在使用xlsread()函数的时候,还在想,为什么读取进来的数据只能是数值。后来,在学习中才发现是可以读取文本的,尤其是在处理带有标题的Excel时,就显得很有用。具体的语法如下:

[num,txt,content]=xlsread('**.xlsx')

得到的content的属性是一个cell,刚好满足了xlswrite对数据的要求(要么矩阵要么cell)。

xlswrite('ex.xlsx',content) % 这样即可得到文字和数值

———————————————————— 分割线———————————————————————

2.4 csvread()

功能:将csv读取为矩阵
注意:只能读取文件的数值部分,文本无法读取

2.5 importdata()

功能:Load data from file
特点:载入的文件成为一个struct,既有文本,也有数值。所以如果需要用到field(即colheaders),就使用该函数。

2.6 zeros()

功能:新建一个全为0的数组,可以为数组不断添加元素

2.7 unique()

功能:Unique values in array

2.8 intersect()

功能:Set intersection of two arrays
例子:

a=[2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014];
b=[1990,1991,1992,1993,1994,1995,1996,1997,1998,1999,2000,2001,...
    2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014];
same=intersect(a,b);
结果如下:
2001	2002	2003	2004	2005	2006
2007	2008	2009	2010	2011	2012	2013	2014

2.9 min()

功能:Smallest elements in array

2.10 max()

功能:Largest elements in array

2.11 find()

功能:Find indices and values of nonzero elements
注意:

clear;clc;
a=[1,5,3;2,3,4;3,4,5];
[m,n]=find(a==5);

% summary:
% 1. 当查询的元素有多个时,就会在m和n中返回多个值,比如查询元素5时,得到的结果为:m=[1;3],n=[2;3]
% 表示的含义是,第一个5的行号为m中的1,列号为n中的2;同理,第二个5的行号为m中的3,列号为n中的3% 2. 需要注意的地方:①得到的m和n中的结果都是用分号隔开的;②根据结果可以推断,MATLAB分析数据时
% 的顺序是:先第一列(从开始到结束),第二列(从开始到结束),依次进行。

2.12 floor()

功能:对一个值来说,可以向下取整

floor(1999.0101)
结果:1999

2.13 ceil()

功能:对一个值来说,可以向上取整

floor(1999.0101)
结果:2000

2.14 常用的几种矩阵类型

序号名称创建使用
1cellcell(m,n)a={1,1}拿出第一个元胞中的元素
a=(1,1)则是拿出第一个元胞
2structmethod 1:s=struct(field1,value2,field2,value2)
method 2: student.name=‘Zhongxi’
可以根据filed来调用相应内容

cell和struct的区别
结构体和单元数组十分相似,两者的区别在于,结构体中的数据存储并不是由数字来标示,
而是通过结构体中的名称来进行标示的

update:2020-01-04


2.15 numel()

功能:直接可以获得矩阵中元素的个数。

a =
     1     2     3     4     5
>> numel(a)
ans =
     5

update:2020-01-05

——————————————————————分割线——————————————————————

3. 插值操作

3.1 interp1()

功能:1-D data interpolation(注:默认的插值方法是’Linear’,自己可以修改)
例子:

%% test for interp1()
clear
clc
load t
x=t(:,1);
v=t(:,2);
xq=1:0.25:46;
vq=interp1(x,v,xq);
……
figure
plot(x,v,'ro','linewidth',1);hold on
plot(xq,vq,'b-','linewidth',2)

3.2 linspace()

Function:Generate linearly spaced vector
Syntax:

y = linspace(x1,x2)
% 默认在x1和x2之间生成100个数。
y = linspace(x1,x2,n)
% 在x1和x2之间生成n个数。

——————————————————————分割线——————————————————————

4. 出图相关

4.1. 几个保存图像函数的比较

saveasprintimwrite
平时分析数据时可以使用该方法先保存为pdf,再用PS转成jpg格式。出图的对象只能是matrix
这种方法在论文中插图最靠谱遥感影像出图时可用

update:2020-01-04

4.2. line()

功能:Create line object
在散点图中绘制1:1的线就可以使用line()函数。
update:2020-01-04
——————————————————————分割线——————————————————————

5. 循环相关

5.1 while()

1 function:while loop to repeat when condition is true
2 syntax:

while expression
statements
end

continue\break\return

continue 语句跳过 for 或 while 循环中剩余的说明,并开始下一迭代。要完全退出循环,请使用 break 语句
continue 不是在 for 或 while 循环之外定义的。要退出函数,请使用 return

update:2020-01-04
——————————————————————分割线——————————————————————

其它

tic&toc

功能:用于计算程序的运行时间

tic
code...
toc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值