Python 的 id 函数的 Matlab 等效项

jxr*_*mos 4 python memory matlab memory-management

Matlab 是否有任何等效于 Python 的id 功能?我尝试了一些类似 Python 的语法来创建一个 Matlab 表的副本,但很惊讶它实际上创建了一个带有一个变量的表,该变量的值是表,其变量名是表变量标识符。

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

Lui*_*ndo 5

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

显示的pr字段是指向数据实部的指针,pi用于虚部。(感谢@rayryeng提供此信息。)从 Matlab R2018a 开始pi,由于新的交错复杂存储,指针不再存在。

例如,下面说明了 Matlab 的copy-on-write机制。注意语句怎么y = x不创建的副本x(它具有相同pry了),但修改的条目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
Run Code Online (Sandbox Code Playgroud)