Python的id函数在Matlab中有哪个等效函数?

4

Matlab有没有类似于Python的idfunction的等价物?我尝试使用一些类似Python的语法来创建Matlab表的副本,并惊讶地发现它实际上创建了一个带有变量的表,其值为该表,变量名称为表变量标识符。

我正在尝试了解Matlab中的赋值方式是如何工作的,无论是通过引用还是创建副本,并且如果可能的话,我想获取对象的地址。


2
MATLAB不太会暴露这种类型的信息。您可以从文档中获得其内存管理的高级理解。 - sco1
1
请注意,对象的地址可能会随意更改,因为MATLAB进行惰性复制(写时复制)。如果您分享为什么要知道对象的地址,我们可能会建议一种替代方法。 - Cris Luengo
1个回答

5
我所知道的Matlab中最接近Python的id的是未记录的format debug。使用此格式选项,在命令窗口键入变量名称会显示有关其内存使用情况的信息。
显示的pr字段是数据实部的指针,而pi是虚部的指针。(感谢@rayryeng提供了这些信息。)从Matlab R2018a开始,由于新的交错复杂存储,pi指针不再存在。
例如,以下展示了Matlab的写时复制机制。请注意语句y = x不会创建x的副本(它与y具有相同的pr),但稍后修改y的条目会触发复制(pr改变)。
>> format debug
>> x = 1:5;
>> y = x;
>> x, y
x =
Structure address = 37751590
m = 1
n = 5
pr = ff4bbe80
pi = 0
     1     2     3     4     5
y =
Structure address = 37751590
m = 1
n = 5
pr = ff4bbe80
pi = 0
     1     2     3     4     5

>> y(5) = 10;
>> x, y
x =    
Structure address = 37751590
m = 1
n = 5
pr = ff4bbe80
pi = 0
     1     2     3     4     5
y =    
Structure address = 37751de0
m = 1
n = 5
pr = 85c71e0
pi = 0
     1     2     3     4    10

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接