У меня есть данные эксперимента в структуре, как это:Нахождения средств из полей в структуру без цикла
data.subject.trial
Мне нужно найти средства для оценки на испытаниях по всем участникам (например, что является средний балл всех участников в процессе x?).
Я могу добраться туда, используя нижеследующий цикл, но похоже, что для достижения той же цели должен быть более простой однострочный (значения в «пробном») являются числовыми в этом случае). Какие-нибудь советы? Большое спасибо!
for i = 1:length(data.subject)
for j = 1:length(data.subject(i).trial)
a(i,j) = data.subject(i).trial(j);
end
end
trialMeans = mean(a);
По [документации] (http://www.mathworks.com/help/matlab/matlab_prog/access-data-in-a-structure-array.html): «Примечание: вы можете индексировать часть поле, только если вы ссылаетесь на один элемент массива структуры. MATLAB® не поддерживает такие выражения, как 'S (1: 2) .X (1: 50,1: 80)', которые пытаются индексировать в поле для несколько элементов структуры ». – excaza
вы в основном делаете среднее из всех испытаний во всех предметах, поэтому вам нужно просто использовать 'cell2mat (struct2cell (data.subject)), а затем взять столбец следов, а затем запустить среднее значение? – GameOfThrows
@GameOfThrows Спасибо за это, но он не совсем работает с моими данными - у меня есть дополнительные подполя с разными типами данных, поэтому он вызывает ошибку. Лучшее решение, которое я нашел, похоже на 'A = cell2mat ({data.subject.trial}); % Положите все оценки из всех проб на 1 вектор B = изменить (A, [], length (data.subject)); % Перестройте в строки любого количества предметов – monkeytennis