MATLAB Function Reference Previous page   Next Page

Overloaded method for A(I)=B, A{I}=B, and A.field=B



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


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:

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.


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:


See Also


See Handling Subscripted Assignment for more information about overloaded methods and subsasgn.

Previous page  subplot subsindex Next page

© 1994-2005 The MathWorks, Inc.