How do I change a copy of a cell array without changing the original cell array?
3 次查看(过去 30 天)
显示 更早的评论
I have a 1x2 cell array of two collisionBox objects.
I want to create a copy of the cell array and then change the Pose matrices in the collisionBox objects.
However, when I change the copy, the original changes as well.
How to create a copy of a cell array that is not linked to the original?
ws_ = ws;
ws_{1}{1}.Pose(1,4) = -ws{1}{1}.Pose(1,4);
ws_{1}{1}.Pose(3,4) = -ws{1}{1}.Pose(3,4);
ws_{1}{2}.Pose(1,4) = -ws{1}{2}.Pose(1,4);
ws_{1}{2}.Pose(3,4) = -ws{1}{2}.Pose(3,4);
6 个评论
Rik
2021-6-29
This has indeed nothing to do with the cell. There are two fundamental kinds of variables: handle classes and data classes. A handle will only contain a pointer to the data itself, so copying the variable will only create a new pointer to the same data. Copying a data variable will create a copy of the data itself (although for memory efficiency Matlab uses a copy-on-write system where a variable is only actually duplicated when you change an element).
回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Motion Planning 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!