主要内容

subsasgn

重新定义下标赋值

语法

= subsasgn (S B)

描述

对于在R2021b及以后版本中创建的类,推荐的自定义索引的过程是从某些组合继承的matlab.mixin.indexing.RedefinesParenmatlab.mixin.indexing.RedefinesDot,matlab.mixin.indexing.RedefinesBrace.有关更多信息,请参见定制对象索引

= subsasgn (S B)由MATLAB调用®的语法(我)= B{我}= B,或我= B一个是一个对象。

MATLAB使用内置的subsasgn函数解释索引赋值语句。通过重载修改类的索引赋值行为subsasgn在课堂上。

请注意

你必须叫subsasgn带有输出参数。subsasgn不修改索引操作中使用的对象(第一个输入参数)。您必须分配输出以获取修改后的对象。

输入参数

一个

用于索引操作的对象

年代

结构有两个字段,类型潜艇.对于复合索引表达式,年代是一个结构数组,每一层索引对应一个结构。

  • 类型是一个字符向量或字符串包含(){},或,指示所使用的索引类型。

  • 潜艇包含实际下标的单元格数组、字符数组或字符串数组。

B

正在赋值(赋值语句右侧)

输出参数

一个

赋值语句的结果,它是作为第一个参数传入的修改过的对象。

如果你的实现subsasgn方法指定多个值时,使用变长度输入宗量用于第三个输入参数。

例子

的参数值subsasgn对于所示表达式:

:一个(1:2)= B;

的语法:一个(1:2)= B调用= subsasgn (S B)在哪里年代是一个结构S.type = ' () 'S.subs ={1:2,‘:’}.冒号字符(“:”)表示冒号用作下标。

表达式:

{1:2} = B;

的语法{1:2} = B调用= subsasgn (S B)在哪里S.type =“{}”S.subs = {[1 2]}

表达式:

A.field = B;

的语法A.field = B调用= subsasgn (S B)在哪里S.type = '。'S.subs =“字段”

表达式:

(1、2). name (3:5) = B;

对于更复杂的索引表达式,简单的调用以简单的方式组合。在这种情况下,长度(年代)是下标级别的数目。例如,(1、2). name = B (3:5)调用= subsasgn (S B)在哪里年代是一个3乘1的结构数组,其值如下:

(1)。类型= '()' (2)。类型= '.' (3)。类型= '()'
(1)。潜艇= {1,2} (2)。潜艇= 'name' (3)。潜艇= {[3 4 5]}

提示

subsasgn方法定义的类,MATLAB调用内置的subsasgn.调用内置索引使您能够在定义专门化索引时使用默认索引行为。

算法

在赋值(J, K,…)= B (M, N,…),下标JKN,等等,可以是标量、向量或数组,前提是下列条件都为真:

  • 指定的下标数B,不包括等于1的末尾下标,不会超过ndims (B)

  • 指定的非标量下标数一个等于指定的非标量下标数B.例如,(5一4 1、2)= B (8)是有效的,因为方程两边都使用一个非标量下标。

  • 指定的所有非标量下标的顺序和长度一个匹配指定的非标量下标的顺序和长度B.例如,(1:4 3 3:9) = B (8, 1:7)是有效的,因为方程两边(忽略一个标量下标3.)使用4元素下标,然后是7元素下标。

扩展功能

之前介绍过的R2006a