"John " <email@example.com> wrote in message news:firstname.lastname@example.org... > I have conducted an experiment and saved all trials as a structure with > relevant parameters as fields. > > If I only want to use the correct trials, I am using: > indices = find([allData.correct]==1); > > However, It is only now (that I am using this strucure with over 30'000 > trials that I discover that this works incorrectly when some of the field > values are empty or not a number. > Then length(allData.correct) < length(allData)
It works correctly. It doesn't work the way you expected. Those are two different things.
x = [1  3] % The result is a 2-element vector [1 3].
Normally concatenation like that requires all the quantities being concatenated to have the same number of rows. For backwards compatibility, if I remember correctly, concatenating with  is exempt from that requirement and the  is squeezed out of the resulting vector. I requested that the development staff work on getting that documented in an easy-to-find location.
> How do I obtain an array of all the trials values of a specific field, > which is representive with respect to the index number?
What does it mean for allData(17).correct to be empty or NaN? [I chose 17 arbitrarily.] Shouldn't allData(n).correct be required to ALWAYS contain either true or false? I would likely make my code default to allData.correct being false, then only if I validate that the data is correct should the field be changed and it should only be changed to true.