4.matlab基础

1  函数句柄

1 clear all;
2 f1=@cos
3 t=0:pi/5:pi
4 f1(t)
5 f2=@complex
6 f2(3,4)
 1 clear all
 2 %函数句柄
 3 f1=@char
 4 %函数句柄转换为字符串
 5 s1=func2str(f1)
 6 %字符串转换为函数句柄
 7 f2=str2func(s1)
 8 %f1的类型
 9 functions(f1)
10 %判断f1是不是函数句柄
11 isa(f1,'function_handle')
12 %判断f1,f2是否是同一个函数
13 isequal(f1,f2)

2  单元数组类型

  单元数组是一种比较特殊的数据类型,每个元素都以单元的形式存在.在MATLAB中,采用大括号({})建立单元数组,也可以采用函数cell()来建立单元数组.在获取单元数组的元素时,也采用大括号表示下标.

函数cell() 建立单元数组
clear all
%建立一个两行三列的单元数组
c = cell(2,3)
c{1,1}=[1:3;3:5]
c{2,2}='China'
c{2,3}='Robin'
c{2,1}=100'
View Code

 

函数celldisp() 显示单元数组的内容
clear all
c={eye(2),'China';[1:4],100}
%显示单元数数组的内容
celldisp(c)
%显示的时候改成另外一个名字
celldisp(c,'mycell')
View Code

 

函数cellplot() 以彩色的图形来显示
1 clear all
2 c={'中国','China';[1:4],100}
3 figure
4 out = cellplot(c,'legend')
View Code

 

函数iscell()和函数num2cell() 判断是不是单元数组,矩阵转换为单元数组
1 clear all
2 a=[2.3 4.5 9.2;3.5 3.2 8.5]
3 c=num2cell(a)           %将矩阵转换为单元数组
4 iscell(a)
5 iscell(c)
View Code

 

函数cell2struct() 单元数组转化为结构体变量
1 clear all
2 c={'Dr. Chi',1.80,20110001,[89 90 96]}
3 fields={'name','height','num','score'}
4 %单元数组转化为一个结构体变量
5 s=cell2struct(c,fields,2)
View Code

 

1 clear all
2 c={'中国','China';[1 2 3 4 5],100}
3 %获取元素
4 c{1,1}
5 c{2,1}
6 %输出一个元素
7 c{2,2}=[]

2.1  单元数组的删除与合并

 1 clear all
 2 c={'中国','China';[1:4;2:5],10}
 3 %单元数组的扩充
 4 c{2,4}=100
 5 %第一行元素
 6 c(1,:)
 7 %删除第三列
 8 c(:,3)=[]
 9 d={'北京','Beijing';[],3}
10 %单元数组的合并
11 e=[c,d]
12 %删除第二行
13 e(2,:)=[]

 3  结构体类型

  结构体是按照成员变量名组织起来的不同数据类型数据的集合.结构体类似C语言的结构体数据.每个成员变量用指针操作符"."表示,列如A.name表示结构体变量A的name成员变量.

函数 说明 代码示例
struct 建立结构体变量
clear all;
%前面是变量,后面{}中的是值
s1= struct('type',{'big','little'},'color',{'red'},'data',{[1 2 3;2 3 4]})
s1(1)
s1(2)
View Code

 

istruct 是否为结构体变量  
clear all;
s=struct('one',1,'two',2)
%判断是否是结构体变量
f1=isstruct(s)
%判断one是否是s的成员变量
f2=isfield(s,'one')
f3=isfield(s,'three')
f4=isfield(s,{'one','pi','Two','three'})
View Code

 

isfield 是否为结构体成员  
clear all;
s=struct('one',1,'two',2)
%判断是否是结构体变量
f1=isstruct(s)
%判断one是否是s的成员变量
f2=isfield(s,'one')
f3=isfield(s,'three')
f4=isfield(s,{'one','pi','Two','three'})
View Code

 

fieldnames 结构体变量成员的名字  
clear all;
s=struct('one',1,'two',2,'three',3,'four',4)
%获取成员变量的名字
f1=fieldnames(s)
%对结构体变量的成员变量的字母顺序进行排序
f2=orderfields(s)
View Code

 

substruct 子结构体  
struct2cell 结构体变量转换为单元型变量  
1 clear all;
2 s(1).name='Robin'
3 s(1).sex='Male'
4 s(1).num=20110001
5 s(1).room=203
6 s(2).name='Tom'
7 s
8 %结构体变量转换成单元数组
9 c=struct2cell(s)
View Code

 

orderfield 对结构体变量的成员排序  
clear all;
s=struct('one',1,'two',2,'three',3,'four',4)
%获取成员变量的名字
f1=fieldnames(s)
%对结构体变量的成员变量的字母顺序进行排序
f2=orderfields(s)
View Code

 

getfield 得到结构体的成员变量  
 1 clear all;
 2 s1=struct('one',1,'two',2)
 3 %改变结构体中一个变量的值
 4 f1=getfield(s1,'one')
 5 
 6 %创建一个结构体
 7 s2=struct('name',{'Robin','Tom'},'sex',{'Male','Male'},'score',[100 99])
 8 %获取一个变量的值(第一行第二列)
 9 f2=getfield(s2,{1,2},'name')
10 %也可以直接获取
11 f3=s2(1,2).name
12 
13 %获取变量的值
14 f4=getfield(s2,{1,2},'score',{2})
15 f5=s2(1,2).score(2)
View Code

 

setfield 设置结构体的成员变量  
rmfield 删除结构体的成员变量  
clear all;
%前面是变量,后面{}中的是值
s1= struct('type',{'big','little'},'color',{'red'},'data',{[1 2 3;2 3 4]})
s2=rmfield(s1,'color')
s3=rmfield(s1,{'type','color'})
View Code

 

cell2struct 单元型变量转换为结构体变量  

3.1  直接建立结构体变量

1 clear
2 stu(1).name='zhang san'
3 stu(1).age=28
4 stu(1).gender='Male'
5 stu(2).name='li si'
6 stu(2).age=29
7 stu
8 stu(1)

 4  运算符

  MATLAB提供的基本算术运算有:+  -   *   /   ^常用的算术运算符有如下所示.对于标量和数组,是以元素为单位进行运算.

标量和数组运算 j矩阵运算 g功能
+ +
- -
.* *
./ / 左除
.\ \ 右除
.^ ^ 乘方
.' ' 转置

5  关系运算

关系运算符 s说明 h函数
< 小于 lt
<= 小于等于 le
> 大于 gt
>= 大于等于 ge
== 恒等于 eq
~= 不等于 ne
 1 clear all;
 2 a=3>2
 3 %三行四列的矩阵
 4 b1=rand(3,4)
 5 %大于0.5
 6 b2=b1>=0.5
 7 %小于等于0.8
 8 b3=b1<=0.8
 9 %b2 b3相等的部分
10 c1=eq(b2,b3)
11 %b2 b3不等的部分
12 c2=b2~=b3

5.1  比较两个浮点数

1 clear all
2 format long
3 a=3.14159+eps
4 b=3.14159
5 c1=a==b
6 c2=a>b
7 c3=abs(a-b)<1e-10
8 format short

6  逻辑运算符

6.1  逐个逻辑运算

  在MATLAB中,逻辑运算分为3类,分别是逐个元素的逻辑运算,快速逻辑运算和逐位逻辑运算.逐个元素的逻辑运算有3种,分别是逻辑与&,逻辑或和逻辑非(~).在进行两个数组或句子的逻辑与和逻辑或时,必须具有相同的维数.

                                                                   逐个逻辑运算

运算符 h函数 s说明
& and l逻辑与
| or 逻辑或
~ not 逻辑非
  xor 逻辑异或
 1 clear all
 2 A=rand(3,4)
 3 B=A>0.6
 4 C=A<0.4
 5 % 6 d1=B&C
 7 % 8 d2=B|C
 9 %10 d3=~B
11 %异或
12 d4=xor(B,C)

6.2  快速逻辑运算 

 在MATLAB中,有两个快速逻辑运算符,逻辑与(&&)和逻辑或(||).&&运算符和&运算符非常相近.&&运算符在参与运算的第一个操作数为假时,直接返回假,不再返回第二个操作数,||操作数,在参与运算的第一个操作数返回真时,直接返回真,不再判断第二个操作数

快速逻辑运算
运算符 说明
&& 快速逻辑与,当第一个操作数为假时,直接返回假,否则和&相同
|| 快速逻辑或,当第一个操作数为真时,直接返回真,否则和|相同
1 clear all
2 a=0
3 (a>0)&&(3/a>0)  %快速逻辑与
4 (a>0)&(3/a>2)   %逻辑与

6.3  逐位逻辑运算

逐位逻辑运算
函数 函数说明
bitand(a,b) 逐位逻辑与
bitor(a,b) 逐位逻辑或
bitcmp(a,b) 逐位逻辑非
bitxor(a,b) 逐位逻辑异或
 1 clear all
 2 a=20
 3 b=23
 4 %十进制数转换为二进制
 5 c1=dec2bin(a)
 6 c2=dec2bin(b)
 7 
 8 %位与
 9 d1=bitand(a,b)
10 d2=dec2bin(bitand(a,b))
11 
12 %位或运算
13 d3=dec2bin(bitor(a,b))
14 d4=dec2bin(bitxor(a,b))

 

posted @ 2018-04-19 09:32  喵小喵~  阅读(333)  评论(0编辑  收藏  举报