문제

나는 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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top