与Matlab等效的Python id函数

时间:2018-10-04 21:18:42

标签: python matlab memory memory-management

Matlab是否具有与Python的id function等效的功能?我尝试了一些类似Python的语法来创建Matlab表的副本,但感到惊讶的是它实际上创建了一个表,其中包含一个变量,该变量的值为表,变量名为表变量标识符。

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

1 个答案:

答案 0 :(得分:4)

我在Matlab中知道的最接近Python的id是未记录的format debug。使用此格式选项,在命令窗口中键入变量名称将显示有关其内存使用情况的信息。

显示的pr字段是指向数据实部的指针,而pi则是虚部。 (为@rayryeng提供给this information的信用。)由于新的interleaved complex存储空间,从Matlab R2018a开始,pi指针不再存在。

例如,以下内容说明了Matlab的copy-on-write机制。请注意,语句y = x不会创建x的副本(它与pr具有相同的y),但是稍后会修改y的条目on会触发复制({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