the @key class dot-properties

let's assume k, a @key object created from the following sample keyfile:

label       start finish cues conds resps
red_vert     -100  200    23  [1:5 100]   0 % this is a comment
red_horiz    -100  200    25  11:20   0
blue_vert    -100  200    23  21:30   0
blue_vert    -100  200    25  31:40   0

you can retrieve information from the object using the following notation:

>> object.property

note that only the first 3 letters (case-insensitive) of the property name are meaningful. Thus, the following sample calls are equivalent:

>> k.con;
>> k.conditions;
>> k.Conds;

getting information on the object as a whole

>> k.print  % lists the object's content on the command window
>> k.length % returns the number of keys in the object
>> k.size   % returns the number of subkeys for each key
ans =
     1  1  2

>> k.labels
ans = 
    'red_vert'  'red_horiz'  'blue_vert'

returning a single-key object from an existing object

individual keys from a @key object can be referenced by either the key number or the key label, in parentheses:

>> k2 = k(2);
>> k3 = k('blue_vert'); % note that k(3) is a complex key
>> k3.size    % the key has 2 subkeys
ans =
     2

>> k4 = k(3,2); return only the 2nd subkey of the 3rd key
>> k4.size
ans =
     1

returning specific fields from a key

to retrieve field values from a single key, append a dot followed by the field name:

>> k(1).label
ans =
     'red_vert'


>> k('red_vert').conditions
ans =
     1     2     3     4     5     100
        

careful about complex keys:

>> k(3).cues
Warning: this is a complex key; returning value for 1st subkey only
> In c:\users\giuseppe\docs\matlab\giucode\@key\subsref.m at line 135
ans =
     23
>> k('blue_vert',2).cues % requesting the cue code for the 2nd subkey of k(3)
ans =
     25

again note that key number and key label are interchangeable indexing methods.

changing field values

Values of individual key fields can be set in the following way:

>> k(2).resps = [0,6];
>> k(1).label = 'different_name';

Careful about complex keys:

>> k(3).blocks = [4 5];
??? Error using ==> key/subsasgn
this is a complex key
try: kobj(key,subkey).field=value

>> k(3,1).blocks = [4 5];
>> k(3,2).blocks = [4 5]; % this will work