Matlab - for loop over cell array "foreach"-like syntax loops only over the first element -


i thought if write

for x = cell_array     ... end 

then loop run on elements of cell_array, in following case doesn't:

>> tags  tags =       'dset3'     'dset4'     'cpl1'  >> class(tags)  ans =  cell  >> t = tags      tmp = t{:}  %no semicolon: i.e. print it.    end  tmp =  dset3 

so works first element.

what's problem?

according the documentation, for x = cell_array iterate on columns of cell array.

the reason confusion in question how {:} expansion behaves:

>> = {3;4}  =       [3]     [4]  >> b = a{:}  b =       3 

in above, a{:} akin typing in comma-separated list elements elements of cell array a. except not quite! if write such list explicitly, get:

>> c = 3,4  c =       3   ans =       4 

somehow, >> b = a{:}, other elements of a discarded silently, if e.g. a = {1 2; 3 4}.

however, in other contexts, a{:} expand full comma-separated list:

>> extra_args = {'*-'; 'linewidth'; 30}; >> plot(1:2, extra_args{:}) >> extra_args = {}; >> plot(1:2, extra_args{:}) 

this it's intended do.


Comments

Popular posts from this blog

python - Subclassed QStyledItemDelegate ignores Stylesheet -

java - HttpClient 3.1 Connection pooling vs HttpClient 4.3.2 -

SQL: Divide the sum of values in one table with the count of rows in another -