2014-06-19 2 views
0

내 데이터가 2 개의 벡터에 있습니다. 그런 다음 [n, xout] = hist (x, y)를 사용하면 빈도 카운트와 빈 위치가 포함 된 벡터 n과 xout을 반환합니다. x는 내 실제 데이터이고 y는 히스토그램을 작성하려는 세그먼트입니다. 막대 (xout, n)를 사용하여 막대 그래프를 그립니다. 결국 나는 가우스 적합성으로이 히스토그램을 맞추고 있습니다.matlab, 히스토그램 플롯에서 내 데이터를 찾는 방법

이제 실제 데이터 (벡터 x의 각 점)가 막대 그래프에 어디에 있는지 알고 싶습니다. 누군가 나를 알아낼 수 있습니까?

답변

1
[~, result] = min(abs(bsxfun(@minus, y(:), x(:).'))); 

x의 각 값에 대해 부여 y에 가까운 요소의 인덱스. 그러므로 y(result)은 각각 x에 대해 y에 가장 근접한 요소입니다.

예 :

당신은 histc를 사용하려면
>> x = [0.4 1.6 5.3 4.2 3.1 7.8]; 
>> y = [0 2 4 6 8]; 
>> [~, result] = min(abs(bsxfun(@minus, y(:), x(:).'))) 
result = 
    1  2  4  3  3  5 
>> y(result) 
ans = 
    0  2  6  4  4  8 
+0

그러나 어떻게 히스토그램에서 각 x 점의 위치를 ​​찾을 수 있습니까? – user3714919

+0

x = 0.4 또는 x = 1.6 인 곳을 찾기 위해 히스토그램을 작성한 후이를 원합니다. – user3714919

+0

@ user3714919 글쎄, 내 답변에서 제공하는 것입니다. 그렇지 않습니까? 'x (1)'이 0.4 일 때,'result (1)'은'1'이고 첫 번째 간격에'x (1)'이라고 알려줍니다. 또는'y (result (1))'가'0'이며, 그 간격의 중심을 알려준다. –

1

. histc초 입력 hist 같은 센터가 아니기 때문에

bin = idx(x == 0.4); 

그냥 조심하지만, 각 빈의 종료 값 :

[binCounts, idx] = histc(x, y); 

그런 다음 X의 특정 값이있는 빈을 찾을 수 있습니다. 따라서 y 벡터를 변경해야 할 수 있습니다.

관련 문제