重新定义下标赋值
A = subsasgn(A,S,B)
对于在R2021b及更高版本中编写的类,自定义索引的推荐过程是从的某个组合继承matlab.mixin.indexing.RedefinesParen
,matlab.mixin.indexing.RedefinesDot
,matlab.mixin.indexing.RedefinesBrace
.有关更多信息,请参见自定义对象索引.
A = subsasgn(A,S,B)
由MATLAB调用®对于语法A(i) = B
,A{i} = B
,或A.i = B
当一个
对象。
MATLAB使用内置的subsasgn
函数解释索引赋值语句。通过重载修改类的索引赋值行为subsasgn
在课堂上。
请注意
你必须打电话subsasgn
使用输出参数。subsasgn
不修改索引操作中使用的对象(第一个输入参数)。必须分配输出以获得修改后的对象。
|
索引操作中使用的对象 |
|
结构,包含两个字段,
|
|
正在赋值(赋值语句的右侧) |
|
赋值语句的结果,即作为第一个参数传入的已修改对象。 如果你实现了一个 |
参数的值。subsasgn
表达式如下所示:
A(1:2,:) = b;
的语法A(1:2,:) = b
调用A = subsasgn(A,S,B)
在哪里年代
是一个结构S.type = '()'
而且S.subs = {1:2,':'}
.冒号字符(“:”
)表示冒号用作下标。
对于表达式:
A{1:2} = b;
的语法A{1:2} = b
调用A = subsasgn(A,S,B)
在哪里S.type = '{}'
而且S.subs = {[1 2]}
.
对于表达式:
A.field = B;
的语法A.field = B
调用A = subsasgn(A,S,B)
在哪里S.type = '.'
而且S.subs = 'field'
.
对于表达式:
A(1,2).name(3:5) = B;
简单的调用以一种直接的方式组合起来,用于更复杂的索引表达式。在这种情况下,长度(年代)
是下标层数。例如,A(1,2).name(3:5) = B
调用A = subsasgn(A,S,B)
在哪里年代
是一个3乘1的结构数组,具有以下值:
(1)。类型= '()' |
(2)。类型= '.' |
(3)。类型= '()' |
(1)。潜艇= {1,2} |
(2)。潜艇= 'name' |
(3)。潜艇= {[3 4 5]} |
在subsasgn
方法定义的类,MATLAB调用内置的subsasgn
.调用内置索引使您可以在定义专用索引时使用默认索引行为。
在作业中A(j, k,…)= b (m, n,…)
,下标J
,K
,米
,N
,等等,可以是标量、向量或数组,当以下所有条件都为真时:
指定的下标数B
的返回值,不包括后面等于1的下标ndims (B)
.
指定的非标量下标数一个
等于指定的非标量下标的数目B
.例如,A(5,1:4,1,2) = b (5:8)
有效,因为方程两边都使用了一个非标量下标。
指定的所有非标量下标的顺序和长度一个
匹配指定的非标量下标的顺序和长度B
.例如,A(1:4,3,3:9) = b (5:8,1:7)
有效,因为方程两边(忽略一个标量下标3.
)使用4个元素的下标和7个元素的下标。