Extracting the same column in a cell array for anova

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.

 採用された回答

Adam Danz
Adam Danz 2019 年 10 月 24 日
編集済み: Adam Danz 2019 年 10 月 24 日

0 投票

'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 件のコメント

Cside
Cside 2019 年 10 月 24 日
編集済み: Cside 2019 年 10 月 24 日
this works! Is there a line I can add to the code so it does the same for the 2nd to 6th columns of every double?
Adam Danz
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
Walter Roberson 2019 年 10 月 24 日

0 投票

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.

カテゴリ

質問済み:

2019 年 10 月 24 日

コメント済み:

2019 年 10 月 24 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by