how to take a mean of specific rows
77 ビュー (過去 30 日間)
古いコメントを表示
hi. i have created a mat file which contains 42 rows and 7 number of columns 42 rows represent 42 months started from January.(3 years 6 months) i want to take a mean of all monthly values all January(rows 1,13,25,37) mean all feb (rows 2,14,26,38) like that for all months
so it would give me 12 rows and 7 columns.
hope you understand. any help will appreciable.
0 件のコメント
回答 (2 件)
Image Analyst
2017 年 9 月 12 日
Assuming you have, or can add, a column with the month number, then simply use grpstats(), if you have the Statistics and Machine Learning Toolbox.
monthlyMeans = grpstats(yourTable, monthColumn);
0 件のコメント
KL
2017 年 9 月 12 日
編集済み: KL
2017 年 9 月 12 日
your_variable_mean_1 = mean(your_variable([1 13 25 37],:),1) %row-wise mean
your_variable_mean_2 = mean(your_variable([2 14 26 36],:),1)
your_variable_mean_1 = mean(your_variable([1 13 25 37],:),2) %column-wise mean
your_variable_mean_2 = mean(your_variable([2 14 26 36],:),2)
But this is not the ideal way, you should include month number in a column and create a table. Then you can use month as grouping variable and do your calculations in the proper way.
2 件のコメント
KL
2017 年 9 月 13 日
No need for a loop. Do it the right way and it's very simple. So I've created a month number vector and calculating monthly means for all the columns in a new table. Suit it to your needs!
%unnamed is your array of 42x7.
mon_no = repmat((1:12)',4,1); %here goes your month numbers
T = table(mon_no(1:42), unnamed, 'VariableNames',{'mon_no','values'});
mean_T = varfun(@mean,T,'GroupingVariables','mon_no');
参考
カテゴリ
Help Center および File Exchange で Matrices and Arrays についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!