更新时间:
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');
正确的方法是:
- 先将Excel读取进来给一个变量;
- 再用
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 常用的几种矩阵类型
序号 | 名称 | 创建 | 使用 |
---|---|---|---|
1 | cell | cell(m,n) | a={1,1}拿出第一个元胞中的元素 a=(1,1)则是拿出第一个元胞 |
2 | struct | method 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. 几个保存图像函数的比较
saveas | imwrite | |
---|---|---|
平时分析数据时可以使用该方法 | 先保存为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