你能获得MATLAB对象的唯一标识符吗?

时间:2013-09-04 14:55:50

标签: matlab oop uniqueidentifier

我正在调试一些MATLAB代码,并希望确保对对象的两个引用实际上是指同一个对象。有没有办法获取对象的唯一标识符(例如内存地址)?

据我所知,我无法将自己的ID添加到对象中,因为它们是MATLAB随机数流。

3 个答案:

答案 0 :(得分:5)

如果您正在使用OOP,那么您可以添加属性ID并在构造对象期间设置它。

java.rmi.server.UID()是获取唯一ID的好方法

然而,==的测试会检查实际的句柄,因此这更像是一个可用性问题。

classdef yourClass < handle

properties    
    ID
end

methods
    function obj = yourClass()
        obj.ID = java.rmi.server.UID();
    end

end

end

检查对象会很简单。

答案 1 :(得分:5)

如果您想要比较的对象是MATLAB随机数流(即它们是类RandStream),那么它们就是句柄对象。在这种情况下,您不需要唯一ID:如果您使用eq==进行比较并且它们相同,那么它们就是相同的对象。

正如您所说,您无法将自己的属性添加到类RandStream的对象中,但如果您真的想要,则可以继承RandStream并将自己的属性添加到子类。您可以在属性中存储唯一标识符,使用char(java.util.UUID.randomUUID)生成。

答案 2 :(得分:0)

您可以使用每个图形对象中的UserData字段来存储您生成的唯一标识。如果使用用户定义的类,则可以在类中添加类似的字段。

通过使用全局计数器来分配每个新身份,身份可以保持唯一。