主要内容

subsasgn

使用函数调用进行下标赋值

说明

R = subsasgn(A,S,B) 返回对数组 A 执行的圆括号、花括号或点索引赋值(或这些类型表达式的一个或多个组合)得出的结果。结构体 S 包含要执行的赋值的详细信息,B 是要赋给 A 的值。

注意

通过显式调用 subsasgn 函数执行索引赋值的速度始终比执行等效的索引语句慢。

示例

示例

全部折叠

创建一个 3×3 矩阵和一个 1×3 向量。使用标准索引语法将向量赋给矩阵的第一行。

A = magic(3);
B = [-1 -1 -1];
A(1,:) = B
A =

    -1    -1    -1
     3     5     7
     4     9     2

调用 subsasgn 以执行等效于 A(1,:) = B 的运算,其中 B = [-2 -2 -2]。使用 substruct 函数创建描述索引表达式的结构体。

B = [-2 -2 -2];
A = subsasgn(A,substruct('()',{1,':'}),B)
A =

    -2    -2    -2
     3     5     7
     4     9     2

创建一个包含单个字段的结构体,该字段具有向量值。使用标准索引语法替换向量的第二个元素。

A.data = [5 10 15];
B = 20;
A.data(2) = B
A = 

  struct with fields:

    data: [5 20 15]

调用 subsasgn 以执行等效于 A.data(2) = 25 的运算。使用 substruct 函数创建描述复合索引表达式的结构体。

A = subsasgn(A,substruct('.','data','()',{2}),25)
A = 

  struct with fields:

    data: [5 25 15]

创建一个 1×3 元胞数组,并使用标准索引语法替换第三个元素。

C = {"one",2,'three'};
C{3} = 'four'
C =

  1×3 cell array

    {["one"]}    {[2]}    {'four'}

调用 subsasgn 以执行等效于 C{3} = 'five' 的运算。使用 substruct 函数创建描述索引表达式的结构体。

C = subsasgn(C,substruct('{}',{3}),'five')
C =

  1×3 cell array

    {["one"]}    {[2]}    {'five'}}

输入参数

全部折叠

索引表达式的目标,指定为任何数据类型的数组。

索引参量结构体(也称为子结构体),指定为结构体数组。每个结构体有两个字段:

  • type - 索引表达式的类型,指定为 "()"".""{}",分别表示圆括号索引、点索引或花括号索引。该值可以是字符向量或字符串标量。

  • subs - 下标值,指定为字符向量或字符串(对于点索引),或者指定为索引向量元胞数组(对于圆括号索引或花括号索引)。

S 是标量结构体(对于单个索引表达式,如 A{1})或者结构体数组(对于复合索引表达式)。例如,A{1}.field(3:5) 有三个索引级别。对于此表达式,S 是 1×3 结构体数组:

S(1)

type: '{}'

subs: {[1]}

S(2)

type: '.'

subs: 'field'

S(3)

type: '()'

subs: {[3 4 5]}

数据类型: struct

赋给索引目标的值,指定为任何数据类型的数组。

输出参量

全部折叠

下标赋值的结果,以数组形式返回。

您必须使用输出参量调用 subsasgnsubsasgn 不修改索引目标 (A),因此您必须为修改后的数组定义输出变量。

提示

扩展功能

全部展开

版本历史记录

在 R2006a 之前推出