Matlab有没有类似于Python的id
function的等价物?我尝试使用一些类似Python的语法来创建Matlab表的副本,并惊讶地发现它实际上创建了一个带有变量的表,其值为该表,变量名称为表变量标识符。
我正在尝试了解Matlab中的赋值方式是如何工作的,无论是通过引用还是创建副本,并且如果可能的话,我想获取对象的地址。
Matlab有没有类似于Python的id
function的等价物?我尝试使用一些类似Python的语法来创建Matlab表的副本,并惊讶地发现它实际上创建了一个带有变量的表,其值为该表,变量名称为表变量标识符。
我正在尝试了解Matlab中的赋值方式是如何工作的,无论是通过引用还是创建副本,并且如果可能的话,我想获取对象的地址。
id
的是未记录的format debug
。使用此格式选项,在命令窗口键入变量名称会显示有关其内存使用情况的信息。pr
字段是数据实部的指针,而pi
是虚部的指针。(感谢@rayryeng提供了这些信息。)从Matlab R2018a开始,由于新的交错复杂存储,pi
指针不再存在。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