Moving mean in matrix using first column

1 回表示 (過去 30 日間)
sr9497
sr9497 2022 年 3 月 24 日
編集済み: Matt J 2022 年 3 月 24 日
I have a matrix:
a = [1 3 5 2 4 6 7 8 10;
4 3 5 2 8 6 7 8 7;
5 8 9 7 2 3 6 1 5]
I would like to calculate the mean of the first column and the next four columns:
[1;4;5] and [3;3;8]
[1;4;5] and [5;5;9]
[1;4;5] and [2;2;7]
[1;4;5] and [4;8;2]
Then I would like to do the same starting for a(:,2) where it also takes the mean with the previous column:
[3;3;8] and [1;4;5]
[3;3;8] and [5;5;9]
[3;3;8] and [2;2;7]
[3;3;8] and [4;8;2]
until I have done this for all the columns. For the last column I would like it to start with the first column of the matrix again after taking the mean with the previous column so:
[10;7;5] and [8;8;1]
[10;7;5] and [1;4;5]
[10;7;5] and [3;3;8]
[10;7;5] and [5;5;9]
Is there a way in which I could use movmean() to achieve this? Or is there a better way?
Thanks

採用された回答

Matt J
Matt J 2022 年 3 月 24 日
編集済み: Matt J 2022 年 3 月 24 日
a = [1 3 5 2 4 6 7 8 10;
4 3 5 2 8 6 7 8 7;
5 8 9 7 2 3 6 1 5];
res=@(z) reshape(z,3,1,[]);
A=arrayfun( @(i) res( circshift(a,[0,-i]) ) , [-1,1,2,3],'uni',0);
A=cell2mat(A);
output=(res(a)+A)/2;
output(:,:,1)= a(:,1)/2+a(:,2:5)/2
output =
output(:,:,1) = 2.0000 3.0000 1.5000 2.5000 3.5000 4.5000 3.0000 6.0000 6.5000 7.0000 6.0000 3.5000 output(:,:,2) = 2.0000 4.0000 2.5000 3.5000 3.5000 4.0000 2.5000 5.5000 6.5000 8.5000 7.5000 5.0000 output(:,:,3) = 4.0000 3.5000 4.5000 5.5000 4.0000 3.5000 6.5000 5.5000 8.5000 8.0000 5.5000 6.0000 output(:,:,4) = 3.5000 3.0000 4.0000 4.5000 3.5000 5.0000 4.0000 4.5000 8.0000 4.5000 5.0000 6.5000 output(:,:,5) = 3.0000 5.0000 5.5000 6.0000 5.0000 7.0000 7.5000 8.0000 4.5000 2.5000 4.0000 1.5000 output(:,:,6) = 5.0000 6.5000 7.0000 8.0000 7.0000 6.5000 7.0000 6.5000 2.5000 4.5000 2.0000 4.0000 output(:,:,7) = 6.5000 7.5000 8.5000 4.0000 6.5000 7.5000 7.0000 5.5000 4.5000 3.5000 5.5000 5.5000 output(:,:,8) = 7.5000 9.0000 4.5000 5.5000 7.5000 7.5000 6.0000 5.5000 3.5000 3.0000 3.0000 4.5000 output(:,:,9) = 9.0000 5.5000 6.5000 7.5000 7.5000 5.5000 5.0000 6.0000 3.0000 5.0000 6.5000 7.0000

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeMatrices and Arrays についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by