Extracting the same column in a cell array for anova
4 次查看(过去 30 天)
显示 更早的评论
Hi, I currently have a 1 x 8 cell (attached) and would like to extract the same column in every double and run an anova1 on them - eg 1st column in the 41 x 6 double, 1st column in the 80 x 6 double .... (total of 8 groups). May I know how I may do so?
Thank you, any help is much appreciated.
0 个评论
采纳的回答
Adam Danz
2019-10-24
编辑:Adam Danz
2019-10-24
'c' is your cell array. The first line extracts the first column from each of the elements of c and stores their values in a single column vector. The second line creates a grouping variable of the same length indicating which of the cell groups the data are from. See anova1 for more options on the 3rd line.
y = cell2mat(cellfun(@(x)x(:,1),c,'UniformOutput',false).');
group = cell2mat(cellfun(@(x,i)ones(size(x,1),1).*i,c,num2cell(1:numel(c)),'UniformOutput',false).');
p = anova1(y,group)
2 个评论
Adam Danz
2019-10-24
You'd just need to change the first line. Set col to any column number.
col = 1;
y = cell2mat(cellfun(@(x)x(:,col),c,'UniformOutput',false).');
% ^^^
Walter has a similar variable in his answer, too.
更多回答(1 个)
Walter Roberson
2019-10-24
col_to_extract = 1;
the_columns_as_cells = cellfun(@(C) C(:,col_to_extract), YourCellArray, 'uniform', 0);
You cannot, however, combine these into a single something-by-8 numeric array, as the cells have different numbers of rows.
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 ANOVA 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!