| MATLAB Function Reference | ![]() |
Overloaded method for A(I)=B, A{I}=B, and A.field=B
Syntax
Description
A = subsasgn(A, S, B)
is called for the syntax A(i)=B, A{i}=B, or A.i=B when A is an object. S is a structure array with the fields
type: A string containing '()', '{}', or '.', where '()' specifies integer subscripts, '{}' specifies cell array subscripts, and '.' specifies subscripted structure fields.
subs: A cell array or string containing the actual subscripts.
Remarks
subsasgn is designed to be used by the MATLAB interpreter to handle indexed assignments to objects. Calling subsasgn directly as a function is not recommended. If you do use subsasgn in this way, it conforms to the formal MATLAB dispatching rules and can yield unexpected results.
In the assignment A(J,K,...) = B(M,N,...), subscripts J, K, M, N, etc. may be scalar, vector, or array, provided that all of the following are true:
B, excluding trailing subscripts equal to 1, does not exceed ndims(B).
A equals the number of nonscalar subscripts specified for B. For example, A(5, 1:4, 1, 2) = B(5:8) is valid because both sides of the equation use one nonscalar subscript.
A matches the order and length of nonscalar subscripts specified for B. For example, A(1:4, 3, 3:9) = B(5:8, 1:7) is valid because both sides of the equation (ignoring the one scalar subscript 3) use a 4-element subscript followed by a 7-element subscript.
If A is an array of one of the fundamental MATLAB data types, then assigning a value to A with indexed assignment calls the builtin MATLAB subsasgn method. It does not call any subsasgn method that you may have overloaded for that data type. For example, if A is an array of type double, and there is an @double/subsasgn method on your MATLAB path, the statement A(I) = B does not call this method, but calls the MATLAB builtin subsasgn method instead.
Examples
The syntax A(1:2,:)=B calls A=subsasgn(A,S,B) where S is a 1-by-1 structure with S.type='()' and S.subs = {1:2,':'}. A colon used as a subscript is passed as the string ':'.
The syntax A{1:2}=B calls A=subsasgn(A,S,B) where S.type='{}'.
The syntax A.field=B calls subsasgn(A,S,B) where S.type='.' and S.subs='field'.
These simple calls are combined in a straightforward way for more complicated subscripting expressions. In such cases length(S) is the number of subscripting levels. For instance, A(1,2).name(3:5)=B calls A=subsasgn(A,S,B) where S is a 3-by-1 structure array with the following values:
S(1).type='()' |
S(2).type='.' |
S(3).type='()' |
S(1).subs={1,2} |
S(2).subs='name' |
S(3).subs={3:5} |
See Also
See Handling Subscripted Assignment for more information about overloaded methods and subsasgn.
| subplot | subsindex | ![]() |
© 1994-2005 The MathWorks, Inc.