문제
나는 Matlab 또는 Octave에서 내가 원하는 것을 할 수없는 기능을 찾을 수 없었습니다. 두 열의 행렬 M (x 및 y 값)이 있습니다. 나는 m (:, 1) 또는 m (:, 2)를 수행하여 열을 추출 할 수 있다는 것을 알고 있습니다. 나는 그것을 [잠재적으로] 동일한 크기의 작은 세대로 나누고이 수학의 평균을 플로팅하고 싶습니다. 다시 말해, x 값을 기반으로 값을 쓰레기통에 넣고 쓰레기통의 평균을 찾고 싶습니다. HIST 기능이 도움이 될 것 같은 느낌이 들지만 그렇지 않은 것 같습니다.
누구든지 이런 일을하는 내장 기능을 알고 있습니까?
편집하다
나는 내가 히스를보고 내가 원하는 것을 할 수 없다고 언급하려고했지만, 그것은 내 마음을 미끄러 져야했다.
예 : 다음을 가지고 있다고 가정 해 봅시다.
x=1:20;
y=[1:10,10:1];
m=[x, y];
10 번의 빈을 원한다면 M을 분할하고 싶습니다.
m1=[1:2, 1:2]
...
m5=[9:10, 9:10]
m6=[10:11, 10:-1:9]
...
m10=[19:20, 2:-1:1]
그런 다음 각 빈의 평균을 얻으십시오.
업데이트 : 후속 질문을 게시했습니다 여기. 응답에 크게 감사드립니다.
해결책
블로그에서 비디오 양식으로 답변했습니다.
http://blogs.mathworks.com/videos/2009/01/07/binning-data-in-matlab/
코드는 다음과 같습니다.
m = rand(10,2); %Generate data
x = m(:,1); %split into x and y
y = m(:,2);
topEdge = 1; % define limits
botEdge = 0; % define limits
numBins = 2; % define number of bins
binEdges = linspace(botEdge, topEdge, numBins+1);
[h,whichBin] = histc(x, binEdges);
for i = 1:numBins
flagBinMembers = (whichBin == i);
binMembers = y(flagBinMembers);
binMean(i) = mean(binMembers);
end
제휴하지 않습니다 StackOverflow