一个缩短matlab中stuct / class名称的句柄

时间:2015-11-27 22:24:29

标签: matlab

我有一个具有相对复杂数据树的结构。例如:

class.data.head{1}.data2

我希望得到一个名为 data2_link 的变量,用于链接地址 class.data.head {1} .data2 ,以便:

(1)如果 class.data.head {1} .data2 有任何更改,它也会自动反映到 data2_link ,反之亦然。

(2)我不必输入长名称来访问 class.data.head {1} .data2 中的数据。

谢谢!

3 个答案:

答案 0 :(得分:4)

Matlab不支持引用。唯一的例外是data2,它允许引用对象

要使用它,handle必须是具有超类data2_link=class.data.head{1}.data2 的对象,那么您只需编写:

{{1}}

除非你使用Matlab 2015b或更新版,否则请注意面向对象的matlab significantly slows down

答案 1 :(得分:2)

有一种非常沮丧的方法。您可以创建一个评估所需表达式的函数句柄:

data2_link = @() evalin('caller', 'class.data.head{1}.data2')

现在,每当您需要该表达式时,只需使用

调用它
>> data2_link()

需要额外的括号来调用函数句柄定义的函数。

答案 2 :(得分:1)

刚才有了另一个想法,你可以使用class UserFactory(factory.Factory) class Meta: model = User name = u"Jean" @factory.lazy_attribute def email(self): # Convert to plain ascii text clean_name = (unicodedata.normalize('NFKD', self.name) .encode('ascii', 'ignore') .decode('utf8')) return u'%s@example.com' % clean_name 来访问它并subsref来编写。这不是我所谓的引用,因为你仍然需要subassign,但它可能在不使用OOP的情况下尽可能接近它。

S