cusum
누적합을 사용하여 평균의 미세한 변화 감지
구문
설명
[
는 목표 평균에서 위와 아래로 5 표준편차를 벗어나게 변동한, iupper,ilower
] = cusum(x
)x
의 상부 및 하부 누적합에 대한 첫 번째 인덱스를 반환합니다. 감지 가능한 최소 평균 이동이 1 표준편차로 설정됩니다. 목표 평균과 표준편차는 x
의 처음 25개 샘플에서 추정됩니다.
[
은 상부 및 하부 누적합이 관리 한계를 초과하는 모든 인덱스를 반환합니다.iupper,ilower
] = cusum(___,'all')
[
은 상부 및 하부 누적합도 반환합니다.iupper,ilower
,uppersum,lowersum
] = cusum(___)
cusum(___)
에 출력 인수를 지정하지 않으면 목표 평균 위와 아래의 1 표준편차로 정규화된 상부 및 하부 누적합을 플로팅합니다.
예제
cusum
디폴트 값
선형 추세를 갖고 100개 샘플로 구성된 랜덤 신호를 생성하고 플로팅합니다. 재현 가능한 결과를 얻기 위해 난수 생성기를 재설정합니다.
rng('default')
rnds = rand(1,100);
trnd = linspace(0,1,100);
fnc = rnds + trnd;
plot(fnc)
입력 인수의 디폴트 값을 사용하여 cusum
을 함수에 적용합니다.
cusum(fnc)
처음 25개 샘플의 평균과 표준편차를 계산합니다. 이러한 수치를 목표 평균과 목표 표준편차로 사용하여 cusum
을 적용합니다. 누적합이 목표 평균에서 5 표준편차를 벗어나게 변동하는 점을 강조 표시합니다. 감지 가능한 최소 평균 이동을 1 표준편차로 설정합니다.
mfnc = mean(fnc(1:25)); sfnc = std(fnc(1:25)); cusum(fnc,5,1,mfnc,sfnc)
음의 선형 추세를 사용하여 계산을 반복합니다.
nnc = rnds - trnd; cusum(nnc)
불안정한 움직임 감지
마모로 인해 불안정해지는 차축의 움직임과 유사한 신호를 생성합니다. 분산이 1/9인 백색 가우스 잡음을 추가합니다. 재현 가능한 결과를 얻기 위해 난수 생성기를 재설정합니다.
rng default
sz = 200;
dr = airy(2,linspace(-14.9371,1.2,sz));
rd = dr + sin(2*pi*(1:sz)/5) + randn(1,sz)/3;
점점 커지는 백그라운드 변동과 그 결과로 생성되는 신호를 플로팅합니다.
plot(dr) hold on plot(rd,'.-') hold off
변동과 잡음이 없을 때의 평균과 표준편차를 구합니다. 잡음 없는 이상적인 신호와 그 신호의 안정된 백그라운드를 플로팅합니다.
id = 0.3*sin(2*pi*(1:sz)/20); st = id + sin(2*pi*(1:sz)/5); mf = mean(st)
mf = -3.8212e-16
sf = std(st)
sf = 0.7401
plot(id) hold on plot(st,'.-') hold off
CUSUM 관리도를 사용하여 불안정성이 시작되는 지점을 찾아냅니다. 신호가 이상적인 동작에서 3 표준편차를 벗어난 경우 시스템이 불안정한 것으로 가정합니다. 감지 가능한 최소 이동을 1 표준편차로 지정합니다.
cusum(rd,3,1,mf,sf)
감지 가능한 최소 이동을 증가시켜 위반 기준을 더 엄격하게 합니다. 원치 않는 변동이 발생한 모든 경우를 반환합니다.
cusum(rd,3,1.2,mf,sf,'all')
골프 득점표
골프장의 각 홀에는 공을 넣는 데 필요한 타수를 나타내는 "par"(파)가 있습니다. 숙련된 선수는 대개 해당 파에 매우 근접한 타수를 기록하며 각 홀을 끝냅니다. 시합에서 확실한 우승자로 부상하려면 여러 홀에서 경기를 하고 점수를 누적해야 합니다.
Ben, Jen, Ken이 18홀로 구성된 전체 1라운드 경기를 합니다. 코스는 par-3, par-4, par-5 홀로 구성되어 있습니다. 경기가 끝나면 선수들이 자신의 점수를 계산합니다.
hole = 1:18; par = [4 3 5 3 4 5 3 4 4 4 5 3 5 4 4 4 3 4]; nms = {'Ben';'Jen';'Ken'}; Ben = [4 3 4 2 3 5 2 3 3 4 3 2 3 3 3 3 2 3]; Jen = [4 3 4 3 4 4 3 4 4 4 5 3 4 4 5 5 3 3]; Ken = [4 3 4 3 5 5 4 4 4 4 5 3 5 4 5 4 3 5]; T = table(hole',par',Ben',Jen',Ken', ... 'VariableNames',['hole';'par';nms])
T=18×5 table
hole par Ben Jen Ken
____ ___ ___ ___ ___
1 4 4 4 4
2 3 3 3 3
3 5 4 4 4
4 3 2 3 3
5 4 3 4 5
6 5 5 4 5
7 3 2 3 4
8 4 3 4 4
9 4 3 4 4
10 4 4 4 4
11 5 3 5 5
12 3 2 3 3
13 5 3 4 5
14 4 3 4 4
15 4 3 5 5
16 4 3 5 4
⋮
끝났을 때 하부 누적합이 par 밑으로 가장 낮은 선수가 라운드의 승자가 됩니다. 우승자를 결정하기 위해 세 선수의 합을 계산합니다. 임계값을 작게 설정하여 모든 평균 이동을 감지 가능하게 합니다.
[~,b,~,Bensum] = cusum(Ben-par,1,1e-4,0); [~,j,~,Jensum] = cusum(Jen-par,1,1e-4,0); [~,k,~,Kensum] = cusum(Ken-par,1,1e-4,0); plot([Bensum;Jensum;Kensum]') legend(nms,'Location','best')
이 라운드에서는 Ben이 우승했습니다. 홀별로 타수를 임의로 추가하거나 빼서 다음 경기를 시뮬레이션합니다.
Ben = Ben+randi(3,1,18)-2; Jen = Jen+randi(3,1,18)-2; Ken = Ken+randi(3,1,18)-2; [~,b,~,Bensum] = cusum(Ben-par,1,1e-4,0); [~,j,~,Jensum] = cusum(Jen-par,1,1e-4,0); [~,k,~,Kensum] = cusum(Ken-par,1,1e-4,0); plot([Bensum;Jensum;Kensum]') legend(nms,'Location','best')
입력 인수
x
— 입력 신호
벡터
입력 신호로, 벡터로 지정됩니다.
예: reshape(rand(100,1)*[-1 1],1,200)
climit
— 관리 한계
5 (디폴트 값) | 실수형 스칼라
관리 한계로, 표준편차를 단위로 하는 실수형 스칼라로 지정됩니다.
mshift
— 감지할 최소 평균 이동
1 (디폴트 값) | 실수형 스칼라
감지할 최소 평균 이동으로, 표준편차를 단위로 하는 실수형 스칼라로 지정됩니다.
tmean
— 목표 평균
mean(x(1:25))
(디폴트 값) | 실수형 스칼라
목표 평균으로, 실수형 스칼라로 지정됩니다. 지정하지 않을 경우 tmean
은 x
의 처음 25개 샘플의 평균으로 추정됩니다.
tdev
— 목표 표준편차
std(x(1:25))
(디폴트 값) | 실수형 스칼라
목표 표준편차로, 실수형 스칼라로 지정됩니다. 지정하지 않을 경우 tdev
는 x
의 처음 25개 샘플의 표준편차로 추정됩니다.
출력 인수
iupper,ilower
— 이탈 점 인덱스
정수 스칼라 | 정수 벡터
이탈 점 인덱스로, 정수 스칼라 또는 정수 벡터로 반환됩니다. 모든 신호 샘플이 지정된 허용오차 내에 있는 경우 cusum
은 빈 iupper
인수와 ilower
인수를 반환합니다.
uppersum,lowersum
— 상부 및 하부 누적합
벡터
상부 및 하부 누적합으로, 벡터로 반환됩니다.
세부 정보
CUSUM 관리도
CUSUM 관리도는 공정 평균의 점진적 변화를 감지하도록 설계되었습니다.
수열 x1, x2, x3, …, xn과 함께 추정 평균 mx와 추정 표준편차 σx가 주어진 경우 다음을 사용하여 상부 및 하부 누적 공정 합을 정의합니다.
상부 누적합
하부 누적합
cusum
에서 mshift
인수로 표현되는 변수 n은 이동을 검출할 수 있는, 목표 평균 tmean
에서 벗어난 표준편차 개수입니다.
공정이 Uj > cσx 또는 Lj < –cσx를 따르는 경우 이 공정은 샘플 xj에서 CUSUM 기준을 위반합니다. 관리 한계 c는 cusum
에서 climit
인수로 표현됩니다.
기본적으로 함수는 처음 감지한 위반을 반환합니다. 'all'
플래그를 지정하면 함수는 모든 위반을 반환합니다.
확장 기능
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
사용법 관련 참고 및 제한 사항:
입력 인수 'all'
을 제공할 경우 그 값은 컴파일타임 상수여야 합니다.
버전 내역
R2016a에 개발됨
참고 항목
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)