이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
smoothdata
잡음 있는 데이터의 평활화
구문
설명
는 이동평균을 사용하여 B
= smoothdata(A
)A
의 요소를 평활화합니다. smoothdata
는 A
의 요소로부터 이동 윈도우 크기를 결정합니다. 윈도우는 벡터 전체에 대해 아래로 이동하면서, 각 윈도우 내 요소의 평균을 계산합니다.
A
가 행렬인 경우smoothdata
는A
의 각 열에 대해 아래로 이동하며 이동 평균을 계산합니다.A
가 다차원 배열인 경우smoothdata
는 크기가 1이 아닌A
의 첫 번째 차원에 따라 연산을 수행합니다.A
가 숫자형 변수를 포함한 테이블이거나 타임테이블인 경우smoothdata
는A
의 각 변수에 대해 개별적으로 연산을 수행합니다.
는 하나 이상의 이름-값 인수를 사용하여 평활화에 대한 추가 파라미터를 지정합니다. 예를 들어, B
= smoothdata(___,Name,Value
)t
가 시간 값의 벡터인 경우 smoothdata(A,"SamplePoints",t)
는 t
의 시간을 기준으로 A
의 데이터를 평활화합니다.
예제
이동평균을 사용하여 데이터 평활화하기
잡음이 있는 데이터를 포함하는 벡터를 만들고 이동 평균으로 데이터를 평활화합니다.
x = 1:100;
rng(0,"twister")
A = cos(2*pi*0.05*x+2*pi*rand) + 0.5*randn(1,100);
B = smoothdata(A);
원래 데이터와 평활화된 데이터를 플로팅합니다.
plot(x,A) hold on plot(x,B) legend("Input Data","Smoothed Data")
잡음이 있는 데이터의 행렬
잡음이 있는 3개의 신호를 행으로 나타내는 행렬을 만듭니다. 이동 평균을 사용하여 세 개의 신호를 평활화하고 평활화된 데이터를 플로팅합니다.
x = 1:100; rng(0,"twister") s1 = cos(2*pi*0.03*x+2*pi*rand) + 0.5*randn(1,100); s2 = cos(2*pi*0.04*x+2*pi*rand) + 0.4*randn(1,100) + 5; s3 = cos(2*pi*0.05*x+2*pi*rand) + 0.3*randn(1,100) - 5; A = [s1; s2; s3]; B = smoothdata(A,2); plot(x,B(1,:)) hold on plot(x,B(2,:)) plot(x,B(3,:)) legend("s1","s2","s3")
가우스 필터(Gaussian Filter)
가우스 가중 이동 평균 필터를 사용하여 잡음이 있는 데이터 벡터를 평활화합니다. 필터에서 사용된 윈도우 크기를 표시합니다.
x = 1:100; rng(0,"twister") A = cos(2*pi*0.05*x+2*pi*rand) + 0.5*randn(1,100); [B,winsize] = smoothdata(A,"gaussian"); winsize
winsize = 4
요소를 20개 포함하는 큰 윈도우를 사용하여 원래 데이터를 평활화합니다. 두 윈도우 크기 모두에 대해 평활화된 데이터를 플로팅합니다.
C = smoothdata(A,"gaussian",20); plot(x,B) hold on plot(x,C) legend("Small Window","Large Window")
누락값을 포함한 평활화
NaN
값을 포함하는 잡음이 있는 벡터를 만든 후, NaN
값을 무시한 채로 데이터를 평활화합니다.
rng(0,"twister")
A = [NaN randn(1,48) NaN randn(1,49) NaN];
B = smoothdata(A);
NaN
값을 포함하는 데이터를 평활화합니다. NaN
값을 포함하는 윈도우의 평균은 NaN
입니다.
C = smoothdata(A,"includenan");
B
와 C
의 평활화된 데이터를 플로팅합니다.
plot(1:100,B,"-o") hold on plot(1:100,C,"-x") legend("Ignore Missing","Include Missing")
샘플 점으로 데이터 평활화하기
시간 벡터 t
에 대응하는 잡음 있는 데이터로 구성된 벡터를 만듭니다. 시간(단위: t
) 기준으로 데이터를 평활화하고 원래 데이터와 평활화된 데이터를 플로팅합니다.
x = 1:100; rng(0,"twister") A = cos(2*pi*0.05*x+2*pi*rand) + 0.5*randn(1,100); t = datetime(2017,1,1,0,0,0) + hours(0:99); B = smoothdata(A,"SamplePoints",t); plot(t,A) hold on plot(t,B) legend("Input Data","Smoothed Data")
입력 인수
A
— 입력 데이터
벡터 | 행렬 | 다차원 배열 | 테이블 | 타임테이블
입력 데이터로, 벡터, 행렬, 다차원 배열, table형 또는 timetable형으로 지정됩니다. A
가 테이블이거나 타임테이블인 경우, 변수는 숫자형이거나, DataVariables
이름-값 인수를 사용하여 숫자형 변수를 명확하게 나열해야 합니다. 숫자형이 아닌 변수도 포함되어 있는 테이블을 사용할 때 변수를 지정하면 유용합니다.
데이터형: double
| single
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| logical
| table
| timetable
복소수 지원 여부: 예
dim
— 연산을 수행할 차원
양의 정수 스칼라
연산을 수행할 차원으로, 양의 정수 스칼라로 지정됩니다. 차원을 지정하지 않을 경우 디폴트 값은 크기가 1보다 큰 첫 번째 배열 차원이 됩니다.
m
×n
입력 행렬 A
가 있다고 가정합니다.
smoothdata(A,1)
은A
의 각 열에서 데이터를 평활화하고m
×n
행렬을 반환합니다.smoothdata(A,2)
는A
의 각 행에서 데이터를 평활화하고m
×n
행렬을 반환합니다.
table형 또는 timetable형 입력 데이터의 경우 dim
은 지원되지 않으며 연산은 각 테이블 변수나 타임테이블 변수를 따라 개별적으로 수행됩니다.
method
— 평활화 방법
"movmean"
(디폴트 값) | "movmedian"
| "gaussian"
| "lowess"
| "loess"
| "rlowess"
| "rloess"
| "sgolay"
평활화 방법으로, 다음 값 중 하나로 지정됩니다.
"movmean"
—A
의 각 윈도우에 대한 평균입니다. 이 방법은 데이터에서 주기적 추세를 줄이는 데 유용합니다."movmedian"
—A
의 각 윈도우에 대한 중앙값입니다. 이 방법은 이상값이 나타날 때 주기적 추세를 줄이는 데 유용합니다."gaussian"
—A
의 각 윈도우에 대한 가우스 가중 평균입니다."lowess"
—A
의 각 윈도우에 대한 선형 회귀입니다. 이 방법은 많은 계산량을 요할 수 있지만, 그 결과 불연속점의 수는 적어집니다."loess"
—A
의 각 윈도우에 대한 2차 회귀입니다. 이 방법은"lowess"
보다 계산량이 약간 더 많습니다."rlowess"
—A
의 각 윈도우에 대한 로버스트 선형 회귀입니다. 이 방법은"lowess"
보다 계산량이 더 많은 방법이지만, 이상값에 대해 더 견고합니다."rloess"
—A
의 각 윈도우에 대한 로버스트 2차 회귀입니다. 이 방법은"loess"
보다 계산량이 더 많은 방법이지만, 이상값에 대해 더 견고합니다."sgolay"
— 사비츠키-골레이 필터로,A
의 각 윈도우에 대해 피팅되는 2차 다항식에 따라 평활화됩니다. 이 방법은 데이터가 급격하게 변화할 때 다른 방법보다 더 효과적일 수 있습니다.
window
— 윈도우 크기
양의 정수 또는 duration
형 스칼라 | 음이 아닌 정수 또는 duration
형 값으로 구성된, 요소를 2개 가진 벡터
윈도우 크기로, 양의 정수 또는 duration
형 스칼라나 음이 아닌 정수 또는 duration
형 값으로 구성된 요소를 2개 가진 벡터로 지정됩니다. smoothdata
는 샘플 점을 기준으로 윈도우를 정의합니다.
window
가 양의 정수 스칼라인 경우 윈도우는 길이가window
이고 현재 요소에 중심을 둡니다.window
가 음이 아닌 정수 요소를 2개 가진 벡터[b f]
인 경우 윈도우에는 현재 요소,b
개의 선행 요소, 그리고f
개의 후행 요소가 들어 있습니다.
A
가 timetable형이거나 SamplePoints
가 datetime
형 또는 duration
형 값을 포함하는 경우 window
는 duration
형이어야 합니다.
윈도우 위치에 대한 자세한 내용은 이동 윈도우 크기 항목을 참조하십시오.
예: smoothdata(A,"movmean",4)
예: smoothdata(A,"movmedian",[2 3])
nanflag
— 누락값 조건
"omitmissing"
(디폴트 값) | "omitnan"
| "includemissing"
| "includenan"
누락값 조건으로, 다음 값 중 하나로 지정됩니다.
"omitmissing"
또는"omitnan"
— 평활화할 때A
의NaN
값을 무시합니다. 윈도우의 모든 요소가NaN
인 경우 이에 대응하는B
의 요소는NaN
이 됩니다."omitmissing"
과"omitnan"
은 동일하게 동작합니다."includemissing"
또는"includenan"
— 평활화할 때A
의NaN
값을 포함합니다. 윈도우의 요소가 하나라도NaN
인 경우 이에 대응하는B
의 요소도NaN
이 됩니다."includemissing"
과"includenan"
은 동일하게 동작합니다.
이름-값 인수
선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN
으로 지정합니다. 여기서 Name
은 인수 이름이고 Value
는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.
예: smoothdata(A,SmoothingFactor=0.5)
R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name
을 따옴표로 묶으십시오.
예: smoothdata(A,"SmoothingFactor",0.5)
SamplePoints
— 샘플 점
벡터 | 테이블 변수 이름 | 스칼라 | 함수 핸들 | 테이블 vartype
첨자
샘플 점으로, 샘플 점 값으로 구성된 벡터로 지정되거나 입력 데이터가 테이블인 경우 다음 표에 나와 있는 옵션 중 하나로 지정됩니다. 샘플 점은 데이터의 x축 위치를 나타내며, 이 샘플 점은 정렬되고 고유한 요소를 가져야 합니다. 샘플 점은 간격이 균일할 필요가 없습니다. 벡터 [1 2 3 ...]
이 디폴트 값입니다.
입력 데이터가 테이블이면 다음 옵션 중 하나를 사용하여 샘플 점을 테이블 변수로 지정할 수 있습니다.
인덱싱 방식 | 예제 |
---|---|
변수 이름:
|
|
변수 인덱스:
|
|
함수 핸들:
|
|
변수 유형:
|
|
참고
입력 데이터가 timetable
형인 경우에는 이 이름-값 인수가 지원되지 않습니다. 타임테이블은 행 시간값으로 구성된 벡터를 샘플 점으로 사용합니다. 다른 샘플 점을 사용하려면 행 시간값이 원하는 샘플 점을 포함하도록 타임테이블을 편집해야 합니다.
이동 윈도우는 샘플 점을 기준으로 정의됩니다. 예를 들어, t
가 입력 데이터에 해당하는 시간 벡터인 경우 smoothdata(rand(1,10),3,"SamplePoints",t)
에는 t(i)-1.5
~ t(i)+1.5
범위의 시간 구간을 나타내는 윈도우가 있습니다.
샘플 점 벡터의 데이터형이 datetime
형 또는 duration
형인 경우 윈도우 크기는 duration
형이어야 합니다.
예: smoothdata(A,"SamplePoints",0:0.1:10)
예: smoothdata(T,"SamplePoints","Var1")
데이터형: double
| single
| datetime
| duration
DataVariables
— 연산을 수행할 테이블 변수
테이블 변수 이름 | 스칼라 | 벡터 | 셀형 배열 | pattern형 | 함수 핸들 | 테이블 vartype
첨자
연산을 수행할 테이블 변수로, 다음 표에 있는 옵션 중 하나로 지정됩니다. DataVariables
값은 입력 테이블에서 평활화할 변수를 나타냅니다.
테이블에서 DataVariables
로 지정되지 않은 다른 변수는 평활화되지 않은 채 출력값으로 전달됩니다.
인덱싱 방식 | 예제 |
---|---|
변수 이름:
|
|
변수 인덱스:
|
|
함수 핸들:
|
|
변수 유형:
|
|
예: smoothdata(T,"DataVariables",["Var1" "Var2" "Var4"])
ReplaceValues
— 값 바꾸기 표시자
true
또는 1
(디폴트 값) | false
또는 0
값 바꾸기 표시자로, A
가 테이블 또는 타임테이블이면 다음 값 중 하나로 지정됩니다.
true
또는1
— 입력 테이블 변수를 평활화된 데이터를 포함하는 테이블 변수로 바꿉니다.false
또는0
— 평활화된 데이터를 포함하는 테이블 변수를 입력 테이블 변수에 추가합니다.
벡터, 행렬 또는 다차원 배열 입력 데이터에는 ReplaceValues
가 지원되지 않습니다.
예: smoothdata(T,"ReplaceValues",false)
SmoothingFactor
— 윈도우 크기 인자
0 ~ 1 범위의 스칼라
윈도우 크기 인자로, 0 ~ 1 범위의 스칼라로 지정됩니다. 일반적으로 SmoothingFactor
의 값은 smoothdata
가 A
의 요소로부터 결정한 윈도우 크기를 스케일링하여 평활화 수준을 조정합니다. 0에 근접한 값은 더 작은 이동 윈도우 크기를 생성하여, 평활화를 줄입니다. 1에 근접한 값은 더 큰 이동 윈도우 크기를 생성하여, 평활화를 증가시킵니다. smoothdata
가 윈도우 크기를 결정하는 데 사용하는 요소에 따라 어떤 경우에는 SmoothingFactor
의 값이 윈도우 크기에 별다른 영향을 주지 못할 수 있습니다.
SmoothingFactor
는 기본적으로 0.25입니다. SmoothingFactor
는 window
를 지정하지 않은 경우에만 지정할 수 있습니다.
Degree
— 사비츠키-골레이 차수
음이 아닌 정수
시바츠키-골레이 차수로, 음이 아닌 정수로 지정됩니다. 지정된 평활화 방법이 "sgolay"
일 때만 이 이름-값 인수를 지정할 수 있습니다. Degree
의 값은 각 윈도우 내에 데이터를 피팅하는 사비츠키-골레이 필터의 다항식 차수에 상응하며, 기본적으로 이 값은 2입니다.
Degree
의 값은 균일 샘플 점에 대한 윈도우 크기보다 작아야 합니다. 비균일 샘플 점의 경우, 값은 어떤 윈도우에서나 최대 점 수보다 적어야 합니다.
출력 인수
B
— 평활화된 데이터
벡터 | 행렬 | 다차원 배열 | 테이블 | 타임테이블
평활화된 데이터로, 벡터, 행렬, 다차원 배열, table형 또는 timetable형으로 반환됩니다.
ReplaceValues
의 값이 false
가 아닌 경우 B
는 A
와 크기가 동일합니다. ReplaceValues
값이 false
이면 너비 B
는 입력 데이터 너비와 지정된 데이터 변수 개수의 합입니다.
winsize
— 윈도우 크기
양의 정수 또는 duration
형 스칼라 | 음이 아닌 정수 또는 duration
형 값으로 구성된, 요소를 2개 가진 벡터
윈도우 크기로, 양의 정수 또는 duration
형 스칼라나 음이 아닌 정수 또는 duration
형 값 요소를 2개 가진 벡터로 반환됩니다.
window
를 입력 인수로 지정하는 경우 winsize
는 window
와 동일합니다. window
를 입력 인수로 지정하지 않으면 smoothdata
가 A
의 요소로부터 윈도우 크기를 결정합니다.
세부 정보
이동 윈도우 크기
다음 표에서는 균일한 간격을 갖는 디폴트 샘플 점 벡터 [1 2 3 4 5 6 7]
에서의 윈도우 위치를 보여줍니다.
설명 | 윈도우 크기와 위치 | 윈도우에서의 샘플 점 | 다이어그램 |
---|---|---|---|
스칼라 윈도우 크기의 경우, 윈도우의 앞쪽 경계값은 포함되고 윈도우의 뒤쪽 경계값은 제외됩니다. |
현재 샘플 점 = 4 | 3, 4, 5 | |
현재 샘플 점 = 4 | 2, 3, 4, 5 | | |
벡터 윈도우 크기의 경우, 앞쪽 경계값과 뒤쪽 경계값이 포함됩니다. |
현재 샘플 점 = 4 | 2, 3, 4, 5, 6 | |
입력 데이터의 끝점 근처에 있는 샘플 점의 경우, 다음과 같은 이동 통계 평활화 방법은 윈도우가 첫 번째 샘플 점에서 시작되거나 마지막 샘플 점에서 끝나도록 윈도우를 자릅니다.
|
현재 샘플 점 = 2 | 1, 2, 3, 4 | |
입력 데이터의 끝점 근처에 있는 샘플 점의 경우, 다음과 같은 국소 회귀 평활화 방법은 윈도우가 첫 번째 또는 마지막 샘플 점을 포함하도록 윈도우를 이동합니다.
|
현재 샘플 점 = 2 | 1, 2, 3, 4, 5 | |
알고리즘
평활화 방법에 대한 윈도우 크기가 지정되지 않은 경우 smoothdata
는 발견적 접근법에 근거해 디폴트 윈도우 크기를 계산합니다. 평활화 인자 τ의 경우, 발견적 접근법은 입력 데이터의 에너지의 약 100*τ 퍼센트를 감쇠시키는 이동 평균 윈도우 크기를 추정합니다.
확장 기능
tall형 배열
메모리에 담을 수 없을 정도로 많은 행을 가진 배열을 계산할 수 있습니다.
사용법 관련 참고 및 제한 사항:
tall형 타임테이블은 지원되지 않습니다.
"rlowess"
방법과"rloess"
방법은 지원되지 않습니다.여러 개의 출력값은 지원되지 않습니다.
윈도우 크기를 지정해야 합니다.
smoothdata
가 윈도우 크기를 발견적으로 결정하는 것은 지원되지 않습니다.SamplePoints
및SmoothingFactor
이름-값 인수는 지원되지 않습니다.DataVariables
의 값은 함수 핸들일 수 없습니다.
자세한 내용은 tall형 배열 항목을 참조하십시오.
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
사용법 관련 참고 및 제한 사항:
dim
은 상수여야 합니다.A
가 복소수 입력값인 경우window
인수를 지정해야 합니다.가변 크기
window
인수는 지원되지 않습니다.고정 크기 코드 생성의 경우
A
이외의 모든 입력 인수는 상수여야 합니다.datetime형
SamplePoints
값이나 datetime형RowTimes
를 갖는 timetable형 입력 데이터의 경우, 윈도우 크기를 지정해야 합니다.
스레드 기반 환경
MATLAB®의 backgroundPool
을 사용해 백그라운드에서 코드를 실행하거나 Parallel Computing Toolbox™의 ThreadPool
을 사용해 코드 실행 속도를 높일 수 있습니다.
이 함수는 스레드 기반 환경을 완전히 지원합니다. 자세한 내용은 스레드 기반 환경에서 MATLAB 함수 실행하기 항목을 참조하십시오.
버전 내역
R2017a에 개발됨R2023a: 누락값 조건 지정
평활화할 때 "omitmissing"
또는 "includemissing"
옵션을 사용하여 입력 데이터의 누락값을 생략하거나 포함합니다. 이러한 옵션은 각각 "omitnan"
및 "includenan"
옵션과 동일하게 동작합니다.
R2022a: 평활화된 값 추가
table형 또는 timetable형 입력 데이터의 경우, 입력 테이블 변수를 평활화된 데이터를 포함하는 테이블 변수로 바꾸는 대신, ReplaceValues
이름-값 인수를 false
로 설정하여 평활화된 데이터를 포함하는 테이블 변수를 입력 테이블 변수에 추가하십시오.
R2021b: 샘플 점을 테이블 변수로 지정
table형 입력 데이터의 경우, SamplePoints
이름-값 인수를 사용하여 샘플 점을 테이블 변수로 지정합니다.
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)