如果我在Matlab中有一个struct
,其中多个字段使用相同的对象定义,那么它会被视为内存中的一个对象还是为每个字段重新创建?换句话说,我想为一个对象创建多个字段名称,这在Matlab中可能吗?
例如,
function output = fn(input)
output = struct('field1',input,'field2',input)
end
output
会包含两份input
还是一份?
答案 0 :(得分:0)
我最近找到了一种找到答案的方法。可以在Matlab cmd中输入以下内容。
A=magic(3);
S=struct('field1',A,'field2',A);
format debug
S.field1
S.field2
我的输出是
>> S.field1
ans =
Structure address = 369610c0
m = 3
n = 3
pr = 3fb54e40
pi = 0
8 1 6
3 5 7
4 9 2
>> S.field2
ans =
Structure address = 369610c0
m = 3
n = 3
pr = 3fb54e40
pi = 0
8 1 6
3 5 7
4 9 2
请注意,两个字段的pr
值都相同。
我认为pr
是指向矩阵实部的指针。因此,由于两个字段共享相同的指针,因此不存在同一对象的重复。