jgo*_*ann 10 oop matlab uniqueidentifier
我正在调试一些MATLAB代码,并希望确保对对象的两个引用实际上是指同一个对象.有没有办法获取对象的唯一标识符(例如内存地址)?
据我所知,我无法将自己的ID添加到对象中,因为它们是MATLAB随机数流.
如果您正在使用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
Run Code Online (Sandbox Code Playgroud)
然后检查对象会非常简单.
如果您想要比较的对象是MATLAB随机数流(即它们是类RandStream),那么它们就是句柄对象.在这种情况下,您不需要唯一的ID:如果您使用eq或比较它们==并且它们相等,则它们是同一个对象.
正如您所说,您无法将自己的属性添加到类的对象中RandStream,但如果您真的想要,则可以继承RandStream并将自己的属性添加到子类中.您可以使用生成的属性存储唯一标识符char(java.util.UUID.randomUUID).
您可以使用UserData每个图形对象中都存在的字段来存储您生成的唯一标识。如果使用用户定义的类,您可以在类中添加类似的字段。
通过使用全局计数器来分配每个新身份,可以保持身份的唯一性。