I think the problem is, that the values are scalars and not numbers, cause with column 4 it works.
mean of columns in a cell
3 ビュー (過去 30 日間)
古いコメントを表示
I have a cell, wich looks like
'S001' [] ' M' 29 '70' '180' '118' '70'
'S002' [] 'F' 25 '58' '166' '130' '90'
'S003' [] 'M' 34 '62' '167' '120' '78'
'S004' [] 'F' 28 '72' '160' '118' '78'
...
Now I would like to have the means of each row. I try
cellfun(@mean,cell_formatiert(3:14,k))
I get an answer, but it is wrong.
5 件のコメント
Adam Danz
2020 年 1 月 17 日
I'm confused. The title of the question states that you want the mean of columns. But then in your question, " I would like to have the means of each row". So, it is rows or columns?
採用された回答
Adam Danz
2020 年 1 月 17 日
編集済み: Adam Danz
2020 年 1 月 17 日
Inputs:
- cell_formatiert: your mxn cell array (presumably containing a mixture of numeric and character values, otherwise there is a much simpler answer).
- rows : a vector of row numbers to include in the analysis
- cols : a vector of column numbers to include in the analysis
cell_formatiert= {
'S001' [] 'M' 29 '70' '180' '118' '70'
'S002' [] 'F' 25 '58' '166' '130' '90'
'S003' [] 'M' 34 '62' '167' '120' '78'
'S004' [] 'F' 28 '72' '160' '118' '78'};
% Select the columns to average for each row
cols = 4:8;
% Select the rows that should be analyzed
rows = 1:4;
Here we convert any character arrays that are within the cols and rows selection to numeric
% identify elements of the selected columns that are character arrays
charIdx = cellfun(@ischar,cell_formatiert);
charIdx(:,~ismember(1:size(cell_formatiert,2),cols)) = false;
% Convert char arrays from chosen columns to numeric
cell_formatiert(charIdx) = num2cell(str2double(cell_formatiert(charIdx)));
If you want to comput the mean of each selected row, given the selected columns
% compute means per selected rows
mu = arrayfun(@(r)mean([cell_formatiert{r,cols}]),rows).';
mu is a vector of row-means, the same size as rows.
If you want to comput the mean of each selected column, given the selected rows
% compute means per selected columns
mu = arrayfun(@(c)mean([cell_formatiert{rows,c}]),cols);
mu is a vector of column-means, the same size as cols.
4 件のコメント
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Matrix Indexing についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!