MATLAB编程-简介
Completion requirements
MATLAB 和 Octave 都具备面向对象的能力。然而,从技术上讲,它们并非完全的面向对象语言。
一种面向对象语言 (OOL) 包含三个组成部分:1. 多态性 2. 继承 3. 封装
Octave 可以通过添加新对象来扩展。这些对象可以重载运算符,例如赋值、切片、比较。
虽然在 MATLAB 中这可以通过 m 脚本完成,但在 Octave 中,新对象是以 C++ 类来实现的。一个关于如何在 Octave 中添加对象的简单示例可以在
在 Octave 中定义和使用结构体(struct)
结构体(struct)是一种将不同类型的数据(称为“字段”)组合到一个单一对象中的数据结构。字段通过其名称访问。
声明结构体
可以通过为字段赋值来声明结构体,字段名与结构体名之间用句点 .
分隔:
>> city.name = 'Liege';
>> city.country = 'Belgium';
>> city.longitude = 50.6333;
>> city.latitude = 5.5666;
输入结构体的名称即可显示其所有字段及对应的值:
>> city
city =
{
name = Liege
country = Belgium
longitude = 50.633
latitude = 5.5666
}
结构体的操作
结构体可以像其他对象一样被复制:
>> city_copy = city;
使用句点操作符可以操作结构体的字段。
例如,可以通过以下方式修改字段值:
>> city.name = 'Outremeuse';
获取字段的值:
>> city.name
ans = Outremeuse
结构体相关函数
-
isstruct(obj)
:判断变量是否为结构体。 -
fieldnames(struct)
:返回结构体中所有字段名(以元胞数组形式):
>> fieldnames(city)
ans =
{
[1,1] = name
[2,1] = country
[3,1] = longitude
[4,1] = latitude
}
-
isfield(struct, 'fieldname')
:检查结构体是否包含某个字段:
>> isfield(city, 'name')
ans = 1
访问和修改字段值的函数方式
-
获取字段值:
>> getfield(city, 'name')
ans = Liege
>> city.('name')
ans = Liege
-
设置字段值:
>> setfield(city, 'name', 'Outremeuse')
这些函数在字段名在程序运行时才确定的情况下特别有用。
删除结构体字段
可以使用 rmfield
函数删除结构体中的字段:
>> city = rmfield(city, 'name');
上述命令会删除 city
结构体中的 'name'
字段,并将结果重新赋值给 city
。
MATlab将方法(单独的M-file)存储在不在标准搜索路径上的类目录中。创建类所需要的两个最小的东西是构造函数和显示m文件。
Last modified: Wednesday, 16 April 2025, 11:35 AM