gpt4 book ai didi

matlab - MATLAB 中的浅拷贝行为

转载 作者:太空宇宙 更新时间:2023-11-03 20:27:32 27 4
gpt4 key购买 nike

很多人在开始使用 Python 时会遇到意外的浅拷贝行为,我想确保我不会在 MATLAB 中犯任何这些错误(我对它的经验较少)。

我读了这篇关于 object behaviors in MATLAB 的文章我读了this question这与指针/句柄行为有关。是否有任何情况 isa(obj, 'handle') 会返回 false 但您仍然会遇到修改 obj 会导致修改另一个变量的情况(据我所知,函数调用的任何参数修改都应该触发 copy on write and duplicate the variable in memory )?

这是对 MATLAB 中类似“浅拷贝”行为的完整理解吗?标准值对象复制行为是否有任何其他注意事项?

最佳答案

一个值类可以包含一个句柄类,如果你修改它,你将改变句柄类的实例。例如(请注意 containers.Map 是一个内置类,它是一个句柄 - 没什么特别的,我只是为了方便而选择它:

>> a = containers.Map; a('hello') = 1;
>> b = struct('field1', 1, 'field2', a);
>> isa(b, 'handle')
ans =
logical
0
>> b.field2('hello') = 2;
>> a('hello')
ans =
2

因此 b 是一个结构(具有值语义),但其中一个字段包含一个 containers.Map,它是一个句柄并具有引用语义。当您修改该字段时,您也会更改 a,这是对底层 containers.Map 的另一个引用。

关于matlab - MATLAB 中的浅拷贝行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48321701/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com