Matlab是否具有与Python的id
function等效的功能?我尝试了一些类似Python的语法来创建Matlab表的副本,但感到惊讶的是它实际上创建了一个表,其中包含一个变量,该变量的值为表,变量名为表变量标识符。
我试图了解赋值在Matlab中是如何工作的,无论是通过引用还是创建副本,并且我想尽可能获取对象的地址。
答案 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