MATLAB Answers

Sorting and averaging matrices

1 ビュー (過去 30 日間)
HT
HT 2019 年 9 月 9 日
コメント済み: Matt J 2019 年 9 月 16 日
  1. I have two matrices. One for example is A = 520 x 1 and it has numbers from 1-8 which are not in order. For every number in this matrix, I have corresponding 1000 samples in another matrix B 520 x 1000. I want to first sort A and arrange numbers from 1-8 for every 8 rows. So output should be (1,2,3,4,5,6,7,8,1,2,3,4,5 and so on) and arrange corresponding values in B also such that they match.
  2. Once this is done, I want to average every 5 rows of B and store it in a new matrix which will be 104 x 1000.
Thanks for the help in advance!

  4 件のコメント

表示 1 件の古いコメント
HT
HT 2019 年 9 月 9 日
I kind of dealt with the point 1. So i concatenated A and B and sorted rows according to numbers from 1-8. I am looking to see if there is a better method to do this and point 2 which is averaging every 5 rows.
Guillaume
Guillaume 2019 年 9 月 9 日
100 is not a multiple of 8. Isn't that a problem? Why average every 5 rows when you have groups of size 8?
HT
HT 2019 年 9 月 9 日
It will be a multiple of 8 always. I just took 100 as a random number. I will edit the main question, thank you.

サインインしてコメントする。

採用された回答

Matt J
Matt J 2019 年 9 月 9 日
編集済み: Matt J 2019 年 9 月 10 日
[~,idx]=sort( reshape(A,8,[]) ,1);
[m,n]=size(idx);
C=reshape(B,m,n,[]);
[m,n,p]=size(C);
idx=idx+(0:n-1)*m+reshape(0:p-1,1,1,p)*(m*n);
C=mean(reshape(C(idx),5,[]));
result=reshape( C ,m*n/5,[]);

  8 件のコメント

表示 5 件の古いコメント
HT
HT 2019 年 9 月 12 日
Thanks, I figured out and now getting the correct values.
HT
HT 2019 年 9 月 16 日
How can I save sorted A values in a variable?
Matt J
Matt J 2019 年 9 月 16 日
[Asorted,idx]=sort( reshape(A,8,[]) ,1);

サインインしてコメントする。

その他の回答 (0 件)

タグ

製品

Community Treasure Hunt

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

Start Hunting!

Translated by