matlab 中的多级/递归赋值 subsasgn 示例

问题描述 投票:0回答:1

我正在编写一个 matlab 类,并且想覆盖

subasgn
运算符来实现此目的

obj.('elem1').('subelem1').('subsubelem1')=val;

深度可能会有所不同。标准

struct
支持这种类型的多级分配(但
containers.Map
dictionary
不支持)。

从下面的链接中,我找到了仅针对 1 个子字段级别编写

subsasgn
的示例,但它不像 struct 那样支持多个级别

https://www.mathworks.com/help/matlab/matlab_oop/code-patterns-for-subsref-and-subsasgn-methods.html

我想知道是否有人可以提供一些关于如何实现这一目标的指示?

谢谢

matlab operator-overloading octave
1个回答
0
投票

如果您使用的是 MATLAB >= R2021b,那么最好的选择是使用

subasgn
,而不是像过去糟糕的日子里那样乱用
RedefinesDot
。这里有一个全面的示例 https://uk.mathworks.com/help/matlab/ref/matlab.mixin.indexing.redefinesdot-class.html .

您仍然需要做更多的工作,因为像这样的多级分配将为您提供

indexOp
的向量 - 但它比使用
subasgn
容易得多。

© www.soinside.com 2019 - 2024. All rights reserved.