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\'
|
函数celldisp() | 显示单元数组的内容 |
clear all c={eye(2),\'China\';[1:4],100} %显示单元数数组的内容 celldisp(c) %显示的时候改成另外一个名字 celldisp(c,\'mycell\')
|
函数cellplot() | 以彩色的图形来显示 |
1 clear all 2 c={\'中国\',\'China\';[1:4],100} 3 figure 4 out = cellplot(c,\'legend\')
|
函数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)
|
函数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)
|
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)
|
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=20110001 5 s(1).room=203 6 s(2).name=\'Tom\' 7 s 8 %结构体变量转换成单元数组 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).name 12 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 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))
请发表评论