主要内容

subsasgn

重新定义下标赋值

语法

A = subsasgn(A,S,B)

描述

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

A = subsasgn(A,S,B)由MATLAB调用®对于语法A(i) = BA{i} = B,或A.i = B一个对象。

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

请注意

你必须打电话subsasgn使用输出参数。subsasgn不修改索引操作中使用的对象(第一个输入参数)。必须分配输出以获得修改后的对象。

输入参数

一个

索引操作中使用的对象

年代

结构,包含两个字段,类型而且潜艇.对于复合索引表达式,年代是一个结构数组,每个索引级别对应一个结构。

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

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

B

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

输出参数

一个

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

如果你实现了一个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,…),下标JKN,等等,可以是标量、向量或数组,当以下所有条件都为真时:

  • 指定的下标数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个元素的下标。

扩展功能

R2006a之前介绍