finding unknown values in a column by using the indices (indexes) of known values.
이전 댓글 표시
Hello, I'm struggling a lot with some of the indexing methods. Right now I have the next matrix:
1.5000 1.7024
1.5000 1.3119
1.5000 1.3122
0.5000 0.8158
0.5000 1.1760
(it's actually a 200 by 2 matrix, but I have shortened it to make things clearer)
The values in row 1 have been provided by linspace(0.5, 1.5, 5) and the values in row 2 have been entered by the user (they are the user's reaction times, and the latter [the values in col 1] are the stimuli durations).
What I'm trying to do is to find all the user's input when the duration was 1.5000 and find the mean of those values.
So far I used: [r,c]=find(mat==1.5000), and got:
r =
1
2
3
10
17
What I need now is the values next to those rows (that is the ones in col 2) and find their mean.
Hope I was clear and concise. Thanks in advance
채택된 답변
추가 답변 (2개)
Sean de Wolski
2012년 7월 17일
accumarray time! (happy time :) )
x =[1.5000 1.7024
1.5000 1.3119
1.5000 1.3122
0.5000 0.8158
0.5000 1.1760]
[y,~,idxu] = unique(x(:,1)); %indexes of each row into each unique value
y(:,2) = accumarray(idxu,x(:,2),[],@mean) %their mean
댓글 수: 7
Juan Pablo
2012년 7월 17일
Juan Pablo
2012년 7월 17일
Juan Pablo
2012년 7월 17일
Sean de Wolski
2012년 7월 17일
What do you have defined as x? If you clear you workspace and copy the above in, it works.
Juan Pablo
2012년 7월 17일
Juan Pablo
2012년 7월 18일
Sean de Wolski
2012년 7월 18일
doc unique
doc accumarray
!
Elizabeth
2012년 7월 17일
편집: Walter Roberson
2012년 7월 18일
Probably not as efficient as those above, but this is the simplest way I always tried to do it.
j= find(row1==1.5);
for k=1:length(j)
d(k)=c(j(k));
end
meanvalues=mean(d)
댓글 수: 5
Sean de Wolski
2012년 7월 17일
편집: Sean de Wolski
2012년 7월 17일
why not just:
m = mean(x(x(:,1)==1.5,2))
Juan Pablo
2012년 7월 18일
Juan Pablo
2012년 7월 18일
Walter Roberson
2012년 7월 18일
row1 = mat(:,1);
It is a column, but Elizabeth has called it a row because you confused rows and columns when you phrased the question.
Juan Pablo
2013년 9월 24일
카테고리
도움말 센터 및 File Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!