Select multiple ranges from a column based on their value and insert the mean of those values into a new matrix

4 次查看(过去 30 天)
Hi,
I have a matrix e.g. 20x2 consisting two measurements (M1 and M2). I want to select all M1 as long as M2 is above a value (e.g. from 1-5) and calculate the mean of M2 and insert the resulting mean in a new matrix. Then take the next M2 values (e.g. from 15-20), calculate the mean and add it to the new matrix as long as M1 is above a value. The resulting matrix should include only the mean values based on matrix 1.
How can I do that?

回答(1 个)

KSSV
KSSV 2018-6-14
A = rand(20,2) ; % random data for demo
R = [0. 0.5 ; 0.5 1.] ; % ranges
iwant = zeros(size(R,1),2) ;
M1 = A(:,1) ; M2 = A(:,2) ;
for i = 1:size(R,1)
idx = M2>=R(i,1) & M2<R(i,2) ;
iwant(i,1) = mean(M1(idx)) ;
iwant(i,2) = mean(M2(idx)) ;
end
  1 个评论
toka55
toka55 2018-6-14
Thank you very much. I think my question was unclear. I have a matrix like:
M1 M2
0 3
0.5 4
0.1 5
0 3
0 2
0.3 4
0.2 4
0 2
0.5 2
0.1 5
I want to calculate the mean only if M1 is >0 and insert the means in a new matrix. I would have then:
Mean
4.5
4
3.5
In other words, I want to calculate the mean of all successive values as long as M1 is >0 and insert them in a new matrix.

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 MRI 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by