加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Matlab中类的成员变量取值函数subsref详解

(2008-06-06 16:40:42)
标签:

matlab

subsref

详解

杂谈

分类: Matlab编程

Matlab中类的成员变量取值函数subsref详解

-- by benbenknight

 

    在Matlab中定义一个类,成员变量取值函数subsref必不可少,样本代码可参照前面博文《Matlab中如何编写一个类?》。

    假设subsref的定义如下所示:

    b = subsref(a,index)

    其中输入参数index是一个重要的变量,对于类中不同的成员变量,必须根据index的不同取值进行访问。 

    index是一个结构体,有type和subs两个数据成员,下面详细介绍index的取值情况。

    (1)概括

    subsref用于三种情况:矩阵(matrix)、元胞(cell)和结构体(struct)。如

    A(I)

    A{I}

    A.field

    对应上面三种情况,index.type的取值分别为'()'、'{}'、'.'。

    (2)读取整个成员变量

    这种方式最为简单,如对于A.field,index长度为1,有:

    index.type='.'

    index.subs = 'field'。

    对应switch分支中的取值语句写做

    b = A.field

    (3)读取矩阵成员的一个元素

    如A.matrix(3,4),index长度为2,有:

    index(1).type='.'         index(2).type='()'

    index(1).subs='matrix'    index(2).subs={3,4} 

    对应switch分支中的取值语句写做

    b = A.matrix(index(2).subs{:})

    (4)读取元胞成员的一个元素

    如A.cell{3,4},index长度为2,有:

    index(1).type='.'       index(2).type='{}'

    index(1).subs='cell'    index(2).subs={3,4}

    对应switch分支中的取值语句写做

    b = A.cell{index(2).subs{:}}

    (5)访问数据成员的成员变量

    按照上面4条规则类推。

    如对象A中有一个成员B是结构体,访问A.B.matrix(3,4),index长度为3,有

    index(1).type='.'    index(2).type='.'         index(3).type='()'

    index(1).subs='B'    index(2).subs='matrix'    index(3).subs={3,4}

    对应switch分支中的取值语句写做

    b = A.B.matrix(index(3).subs{:})

    若B是一个类的对象,对应switch分支中的语句写起来有点小技巧,根据index(1)判断出访问B,便可直接调用B的subsref函数,参照前面博文《Matlab中如何在一个类中使用另一个类作为成员变量?》。 

    (6)访问对象数组中某个对象的成员变量

    如A(2).field,index长度为2,有:

    index(1).type='()'   index(2).type='.'

    index(1).subs={2}    index(2).subs='field' 

    对应switch分支中的取值语句写做

    b = A(index(1).subs{:}).field

    (7)访问对象元胞中某个对象的成员变量

    如A{2}.field,index长度为2,有:

    index(1).type='{}'   index(2).type='.'

    index(1).subs={2}    index(2).subs='field' 

    对应switch分支中的取值语句写做

    b = A{index(1).subs{:}}.field   

    (8)其他情况按照上述7条规则类推

 

    希望对大家能有所帮助。Matlab中类的成员变量取值函数subsref详解

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有