2017-02-27 4 views
0

이것은 매우 궁금한 질문 일 수 있습니다. 코드의 일부 섹션 시간을 빨리 측정해야합니다. 나는 std::chrono::high_resolution_clock 기능을 사용하고 있습니다. 많은 반복을 위해이 코드를 실행하고 기간을 측정해야합니다.코드의 통계 샘플

그래서 여기에 문제가 있습니다. 최소 및 최대 지속 시간 값을 측정하고 샘플 수를 사용하여 평균을 계산할 수 있습니다. 이 경우 4 개의 값만 저장하면됩니다. 그러나 데이터 배포 방법도 알고 싶습니다. 표준 편차 또는 히스토그램을 계산하려면 모든 데이터 요소를 저장해야합니다. 그러나 이것은 하나의 커다란 초기 데이터 구조 또는 동적으로 증가하는 데이터 구조를 필요로합니다. 둘 다 내 임베디드 시스템에서 측정 된 코드에 영향을 미칩니다. 이전 샘플의 표준 편차를 사용하여이 샘플의 표준 편차를 계산할 수 있습니까? 표준 편차 또는 히스토그램

답변

0

계산 모든 데이터 포인트는 거짓 사소

저장 될 것을 요구한다. Welford 알고리즘을 사용하여 실행중인 표준 편차를 계산할 수 있습니다. 단지 실행중인 평균 및 요소의 현재 수 외에 추가 변수가 하나만 있으면됩니다.

히스토그램의 경우 모든 데이터를 유지할 필요가 없습니다. 각 저장소의 개수를 유지하고 새 샘플이있을 때마다 오른쪽 저장소를 증가시켜야합니다. 물론이 간단한 접근 방식을 사용하면 미리 예상되는 범위와 빈 수를 알아야합니다. 이것이 가능하지 않은 경우 작은 범위에서 작은 상자로 시작하여 현재 범위를 벗어나는 요소를 만날 때마다 빈 크기를 조정할 수 있습니다 (인접 빈을 병합). 다시 말하지만, 여기에는 고정 된 양의 메모리 만 필요합니다 (각 빈에 대해 하나의 정수와 범위에 대해 두 개의 정수).

+0

예상되는 값 범위를 알지 못하는 것이 맞습니다. 자동 조절 대가 작동 할 수 있습니다. 오픈 소스 코드 예제를 알고 있습니까? Welford 알고리즘의 요점을 알려줘서 고마워. – ilya1725