MATLAB学习笔记
第5章函数句柄与结构体类型
文章目录
一、函数句柄
1.函数的调用
在MATLAB平台中,对函数的调用方法分为直接调用法和间接调用法。
直接调用法:被调用的函数通常被称为子函数,但是子函数只能与其M文件同名的主函数或在M文件中的其他函数所调用,同时在一个文件中只能有一个主函数。
而使用函数句柄对函数进行调用则避免了上述问题。函数句柄实际上提供了一种间接调用函数的方法。创建函数句柄需要用到操作符@。MATLAB库函数中提供的各种M文件中的函数和使用者自主编写的程序中的内部函数都可以创建函数句柄,从而可以通过函数句柄来实现对这些函数的调用
2.函数句柄的创建
创建函数句柄的一般语法格式为:
Function_Handle=@Function_Filename;
其中:
Function_Filename是函数对应的M文件的名称或MATLAB内部函数的名称。
@是句柄创建操作符
Function_Handle变量保存了这一函数句柄,并在后续的运算中作为数据流进行传递。
例如:F_Handle=@cos,就创建了MATLAB内部函数cos的句柄,并
将其保存在F_Handle变量中,后续的运算过程中就可以通过
F_Handle(x)来实现cos(x)的功能。
>> F_Handle=@cos
F_Handle =
包含以下值的 function_handle:
@cos
>> x=0:0.25*pi:2*pi;
>> y1=cos(x)
y1 =
1.0000 0.7071 0.0000 -0.7071 -1.0000 -0.7071 -0.0000 0.7071 1.0000
>> y2=F_Handle(x)
y2 =
1.0000 0.7071 0.0000 -0.7071 -1.0000 -0.7071 -0.0000 0.7071 1.0000
二、结构体类型
1.结构体类型
MATLAB中的结构体与C语言中的结构体类似,一个结构体可以通过字段存储多个不同类型的数据。因此,结构体相当于一个数据容器,把多个相关联的不同类型的数据封装在一个结构体对象中。
例如,对于一个student结构体对象,其姓名字段name中存储的是字符串类型的数据,年级字段grade中存储的是浮点型数据。一个结构体中可以具有多个字段,每个字段又可以存储不同类型的数据,通过这种方式就把多个不同类型的数据组织在一个结构体对象中。
2.结构体类型的创建
创建结构体对象的方法有两种,可以直接通过赋值语句给结构体的字段赋值,也可以使用结构体创建函数struct来创建结构体。
2.1通过字段赋值创建结构体
在对结构体的字段进行赋值时,赋值表达式的变量名使用“结构体名称.字段名称”的书写形式,对同一个结构体可以进行多个字段的赋值。
>> Student.Name='Sam';
>> Student.GRadeon=6;
>> Student.Sex='boy';
>> Student
Student =
包含以下字段的 struct:
Name: 'Sam'
GRadeon: 6
Sex: 'boy'
>> whos
Name Size Bytes Class Attributes
Student 1x1 524 struct
2.2利用struct函数创建结构体
Struct函数语法格式如下:
strArray=struct(‘filed1’,val1,’field2’,val2,…,’filedn’,varn)
其中:filed1,…,filedn是字段名;val1,…….,valn是相应字段的值。
>> Student=struct('Name','Sam','Grade',6,'Sex','boy')
Student =
包含以下字段的 struct:
Name: 'Sam'
Grade: 6
Sex: 'boy'
>> whos
Name Size Bytes Class Attributes
Student 1x1 524 struct