1 函数句柄
1 clear all;2 f1=@cos3 t=0:pi/5:pi4 f1(t)5 f2=@complex6 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'
|
函数celldisp() | 显示单元数组的内容 | clear allc={eye(2),'China';[1:4],100}%显示单元数数组的内容celldisp(c)%显示的时候改成另外一个名字celldisp(c,'mycell')
|
函数cellplot() | 以彩色的图形来显示 | 1 clear all2 c={ '中国','China';[1:4],100}3 figure4 out = cellplot(c,'legend')
|
函数iscell()和函数num2cell() | 判断是不是单元数组,矩阵转换为单元数组 | 1 clear all2 a=[2.3 4.5 9.2;3.5 3.2 8.5]3 c=num2cell(a) %将矩阵转换为单元数组4 iscell(a)5 iscell(c)
|
函数cell2struct() | 单元数组转化为结构体变量 | 1 clear all2 c={ 'Dr. Chi',1.80,20110001,[89 90 96]}3 fields={ 'name','height','num','score'}4 %单元数组转化为一个结构体变量5 s=cell2struct(c,fields,2)
|
1 clear all2 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)
|
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'})
|
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'})
|
fieldnames | 结构体变量成员的名字 | clear all;s=struct('one',1,'two',2,'three',3,'four',4)%获取成员变量的名字f1=fieldnames(s)%对结构体变量的成员变量的字母顺序进行排序f2=orderfields(s)
|
substruct | 子结构体 | |
struct2cell | 结构体变量转换为单元型变量 | 1 clear all;2 s(1).name='Robin'3 s(1).sex='Male'4 s(1).num=201100015 s(1).room=2036 s(2).name='Tom'7 s8 %结构体变量转换成单元数组9 c=struct2cell(s)
|
orderfield | 对结构体变量的成员排序 | clear all;s=struct('one',1,'two',2,'three',3,'four',4)%获取成员变量的名字f1=fieldnames(s)%对结构体变量的成员变量的字母顺序进行排序f2=orderfields(s)
|
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).name12 13 %获取变量的值14 f4=getfield(s2,{ 1,2},'score',{ 2})15 f5=s2(1,2).score(2)
|
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'})
|
cell2struct | 单元型变量转换为结构体变量 |
3.1 直接建立结构体变量
1 clear2 stu(1).name='zhang san'3 stu(1).age=284 stu(1).gender='Male'5 stu(2).name='li si'6 stu(2).age=297 stu8 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 all2 format long3 a=3.14159+eps4 b=3.141595 c1=a==b6 c2=a>b7 c3=abs(a-b)<1e-108 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=~B11 %异或12 d4=xor(B,C)
6.2 快速逻辑运算
在MATLAB中,有两个快速逻辑运算符,逻辑与(&&)和逻辑或(||).&&运算符和&运算符非常相近.&&运算符在参与运算的第一个操作数为假时,直接返回假,不再返回第二个操作数,||操作数,在参与运算的第一个操作数返回真时,直接返回真,不再判断第二个操作数
运算符 | 说明 |
&& | 快速逻辑与,当第一个操作数为假时,直接返回假,否则和&相同 |
|| | 快速逻辑或,当第一个操作数为真时,直接返回真,否则和|相同 |
1 clear all2 a=03 (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))