movmean
이동 평균
구문
설명
M = movmean(
는 국소 A
,k
)k
점 평균값으로 구성된 배열을 반환합니다. 여기서 각 평균은 A
의 인접 요소들이 포함된 길이 k
의 슬라이딩 윈도우에서 계산됩니다. k
가 홀수면 윈도우의 중심은 현재 위치의 요소가 됩니다. k
가 짝수면 윈도우의 중심은 현재 요소 및 이전 요소가 됩니다. 윈도우를 다 채우기에 요소가 부족할 때는 윈도우 크기가 끝점에서 자동으로 잘립니다. 윈도우가 잘렸을 때는 윈도우를 채우는 요소들의 평균을 구합니다. M
은 A
와 크기가 같습니다.
A
가 벡터인 경우movmean
은 벡터A
의 길이를 따라 연산을 수행합니다.A
가 다차원 배열인 경우movmean
은 크기가 1이 아닌A
의 첫 번째 차원을 따라 연산을 수행합니다.
M = movmean(___,
은 위에 열거된 모든 구문에서 연산을 수행할 dim
)A
의 차원을 지정합니다. 예를 들어 A
가 행렬인 경우, movmean(A,k,2)
는 A
의 열을 따라 각 행에 대한 k
요소 슬라이딩 평균을 계산합니다.
M = movmean(___,
는 nanflag
)A
의 NaN
값을 포함시킬지 또는 생략할지 여부를 지정합니다. 예를 들어, movmean(A,k,"omitnan")
은 각 평균을 계산할 때 NaN
값을 무시합니다. 기본적으로 movmean
은 NaN
값을 포함합니다.
M = movmean(___,
는 하나 이상의 이름-값 인수를 사용하여 이동평균에 대한 추가 파라미터를 지정합니다. 예를 들어, Name,Value
)x
가 시간 값의 벡터인 경우 movmean(A,k,"SamplePoints",x)
는 x
에 있는 시간에 관한 이동평균을 계산합니다.
예제
벡터의 중심 이동 평균
행 벡터의 3점 중심 이동 평균을 계산합니다. 끝점에 있는 윈도우의 요소가 3개 미만일 때는 남은 요소들의 평균을 구합니다.
A = [4 8 6 -1 -2 -3 -1 3 4 5]; M = movmean(A,3)
M = 1×10
6.0000 6.0000 4.3333 1.0000 -2.0000 -2.0000 -0.3333 2.0000 4.0000 4.5000
벡터의 후행 이동 평균
행 벡터의 3점 후행 이동 평균을 계산합니다. 끝점에 있는 윈도우의 요소가 3개 미만일 때는 남은 요소들의 평균을 구합니다.
A = [4 8 6 -1 -2 -3 -1 3 4 5]; M = movmean(A,[2 0])
M = 1×10
4.0000 6.0000 6.0000 4.3333 1.0000 -2.0000 -2.0000 -0.3333 2.0000 4.0000
행렬의 이동 평균
행렬의 각 행에 대한 3점 중심 이동 평균을 계산합니다. 윈도우가 첫 번째 행에서 시작하고, 행 끝까지 수평으로 슬라이딩한 후, 두 번째 행으로 이동합니다. 차원 인수는 2이고, 이것은 A
의 열 방향으로 윈도우를 슬라이딩합니다.
A = [4 8 6; -1 -2 -3; -1 3 4]
A = 3×3
4 8 6
-1 -2 -3
-1 3 4
M = movmean(A,3,2)
M = 3×3
6.0000 6.0000 7.0000
-1.5000 -2.0000 -2.5000
1.0000 2.0000 3.5000
누락값을 포함한 벡터의 이동평균
NaN
요소 2개가 포함된 행 벡터의 3점 중심 이동 평균을 계산합니다.
A = [4 8 NaN -1 -2 -3 NaN 3 4 5]; M = movmean(A,3)
M = 1×10
6.0000 NaN NaN NaN -2.0000 NaN NaN NaN 4.0000 4.5000
평균을 다시 계산하되, NaN
값을 생략합니다. movmean
이 NaN
요소를 생략할 경우, 윈도우 내에 남아 있는 요소들의 평균을 구하게 됩니다.
M = movmean(A,3,"omitnan")
M = 1×10
6.0000 6.0000 3.5000 -1.5000 -2.0000 -2.5000 0 3.5000 4.0000 4.5000
이동 평균에 대한 샘플 점
시간 벡터 t
에 따라 A
에 있는 데이터의 3시간 중심 이동 평균을 계산합니다.
A = [4 8 6 -1 -2 -3]; k = hours(3); t = datetime(2016,1,1,0,0,0) + hours(0:5)
t = 1x6 datetime
01-Jan-2016 00:00:00 01-Jan-2016 01:00:00 01-Jan-2016 02:00:00 01-Jan-2016 03:00:00 01-Jan-2016 04:00:00 01-Jan-2016 05:00:00
M = movmean(A,k,"SamplePoints",t)
M = 1×6
6.0000 6.0000 4.3333 1.0000 -2.0000 -2.5000
완전한 윈도우의 평균만 반환하기
행 벡터의 3점 중심 이동 평균을 계산하되, 3개 미만의 점을 사용하는 모든 계산을 출력값에서 무시합니다. 즉, 요소를 3개 가진 완전한 윈도우에서 계산된 평균만 반환하고, 끝점에서의 계산은 무시합니다.
A = [4 8 6 -1 -2 -3 -1 3 4 5]; M = movmean(A,3,"Endpoints","discard")
M = 1×8
6.0000 4.3333 1.0000 -2.0000 -2.0000 -0.3333 2.0000 4.0000
입력 인수
A
— 입력 배열
벡터 | 행렬 | 다차원 배열
입력 배열로, 벡터, 행렬, 다차원 배열 중 하나로 지정됩니다.
k
— 윈도우 길이
숫자형 또는 duration형 스칼라
윈도우 길이로, 숫자형 또는 duration형 스칼라로 지정됩니다. k
가 양의 정수 스칼라일 때 중심 위치에서의 평균은 현재 위치의 요소와 주위의 요소를 포함합니다.
예를 들어, movmean(A,3)
은 국소 3점 평균값으로 구성된 배열을 계산합니다.
[kb kf]
— 방향 윈도우 길이
2개 요소를 포함하는 숫자형 또는 duration형 행 벡터
방향 윈도우 길이로, 2개 요소를 포함하는 숫자형 또는 duration형 행 벡터로 지정됩니다. kb
와 kf
가 양의 정수 스칼라일 때 계산은 kb+kf+1
개 요소에 대해 이루어집니다. 계산은 현재 위치의 요소, 현재 위치 앞의 kb
개 요소, 그리고 현재 위치 뒤의 kf
개 요소를 포함합니다.
예를 들어, movmean(A,[2 1])
은 국소 4점 평균값으로 구성된 배열을 계산합니다.
dim
— 연산을 수행할 차원
양의 정수 스칼라
연산을 수행할 차원으로, 양의 정수 스칼라로 지정됩니다. 차원을 지정하지 않을 경우 디폴트 값은 크기가 1보다 큰 첫 번째 배열 차원이 됩니다.
차원 dim
은 movmean
이 계산되는 차원 즉, 지정한 윈도우가 슬라이딩하는 방향을 나타냅니다.
m
×n
입력 행렬 A
가 있다고 가정합니다.
movmean(A,k,1)
은A
의 각 열에 대해k
-요소 슬라이딩 평균을 계산하고m
×n
행렬을 반환합니다.movmean(A,k,2)
는A
의 각 행에 대해k
-요소 슬라이딩 평균을 계산하고m
×n
행렬을 반환합니다.
nanflag
— 누락값 조건
"includemissing"
(디폴트 값) | "includenan"
| "omitmissing"
| "omitnan"
누락값 조건으로, 다음 값 중 하나로 지정됩니다.
"includemissing"
또는"includenan"
— 각 평균을 계산할 때A
의NaN
값을 포함합니다. 윈도우의 요소가 하나라도NaN
인 경우 이에 대응하는M
의 요소도NaN
입니다."includemissing"
과"includenan"
은 동일하게 동작합니다."omitmissing"
또는"omitnan"
—A
의NaN
값을 무시하고, 더 적은 수의 점을 대상으로 각 평균을 계산합니다. 윈도우의 모든 요소가NaN
인 경우 이에 대응하는M
의 요소는NaN
이 됩니다."omitmissing"
과"omitnan"
은 동일하게 동작합니다.
이름-값 인수
선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN
으로 지정합니다. 여기서 Name
은 인수 이름이고 Value
는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.
R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name
을 따옴표로 묶으십시오.
예: M = movmean(A,k,"Endpoints","fill")
Endpoints
— 끝점 부근의 윈도우 처리 방법
"shrink"
(디폴트 값) | "discard"
| "fill"
| 숫자형 스칼라 또는 논리형 스칼라
끝점 부근의 윈도우 처리 방법으로, 다음 옵션 중 하나로 지정됩니다.
값 | 설명 |
---|---|
"shrink" | 입력값의 끝점 근처의 윈도우 크기를 실제로 존재하는 요소만 포함하도록 축소합니다. |
"discard" | 윈도우가 실제로 존재하는 요소들과 완전히 겹치지 않을 때는 어떤 평균값도 출력하지 않습니다. |
"fill" | 존재하지 않는 요소를 NaN 으로 바꿉니다. |
숫자형 스칼라 또는 논리형 스칼라 | 존재하지 않는 요소를 지정된 숫자형 값 또는 논리값으로 바꿉니다. |
SamplePoints
— 평균을 계산할 샘플 점
벡터
평균을 계산할 샘플 점으로, 벡터로 지정됩니다. 샘플 점은 A
에 있는 데이터의 위치를 나타냅니다. 샘플 점은 균일하게 샘플링할 필요가 없습니다. 기본적으로, 샘플 점 벡터는 [1 2 3 ... ]
입니다.
이동 윈도우는 샘플 점을 기준으로 하여 정의되며, 이 샘플 점은 정렬되고 고유한 요소를 가져야 합니다. 예를 들어, t
가 입력 데이터에 해당하는 시간 벡터인 경우 movmean(rand(1,10),3,"SamplePoints",t)
에는 t(i)-1.5
~ t(i)+1.5
범위의 시간 구간을 나타내는 윈도우가 있습니다.
샘플 점 벡터의 데이터형이 datetime
형 또는 duration
형인 경우 이동 윈도우 길이는 duration
형이어야 합니다.
샘플 점의 간격이 균일하지 않을 때 Endpoints
를 지정하면 Endpoints의 값은 "shrink"
입니다.
세부 정보
평균값
N개의 스칼라 관측값으로 구성된 유한 길이 벡터 A에 대해, 평균값은 다음과 같이 정의됩니다.
확장 기능
tall형 배열
메모리에 담을 수 없을 정도로 많은 행을 가진 배열을 계산할 수 있습니다.
이 함수는 tall형 배열을 지원하지만 다음과 같은 제한 사항이 있습니다.
SamplePoints
이름-값 인수는 지원되지 않습니다.
자세한 내용은 tall형 배열 항목을 참조하십시오.
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
스레드 기반 환경
MATLAB®의 backgroundPool
을 사용해 백그라운드에서 코드를 실행하거나 Parallel Computing Toolbox™의 ThreadPool
을 사용해 코드 실행 속도를 높일 수 있습니다.
이 함수는 스레드 기반 환경을 완전히 지원합니다. 자세한 내용은 스레드 기반 환경에서 MATLAB 함수 실행하기 항목을 참조하십시오.
GPU 배열
Parallel Computing Toolbox™를 사용해 GPU(그래픽스 처리 장치)에서 실행하여 코드 실행 속도를 높일 수 있습니다.
사용법 관련 참고 및 제한 사항:
SamplePoints
이름-값 인수는 지원되지 않습니다.
자세한 내용은 GPU에서 MATLAB 함수 실행하기 (Parallel Computing Toolbox) 항목을 참조하십시오.
분산 배열
Parallel Computing Toolbox™를 사용하여 대규모 배열을 클러스터의 결합된 메모리에 걸쳐 분할할 수 있습니다.
이 함수는 분산 배열을 완전히 지원합니다. 자세한 내용은 분산 배열을 사용하여 MATLAB 함수 실행 (Parallel Computing Toolbox) 항목을 참조하십시오.
버전 내역
R2016a에 개발됨R2023a: 누락값 조건 지정
각 평균을 계산할 때 "includemissing"
또는 "omitmissing"
옵션을 사용하여 입력 배열의 누락값을 포함하거나 생략합니다. 이러한 옵션은 각각 "includenan"
및 "omitnan"
옵션과 동일하게 동작합니다.
R2023a: 샘플 점을 사용하여 행렬에 대해 계산할 때의 성능이 개선됨
샘플 점이 있을 때 movmean
함수로 행렬에 대해 계산할 때의 성능이 향상되었습니다.
예를 들어, 다음 코드는 대응하는 샘플 점을 사용하여 300×300 행렬의 이동 평균을 계산합니다. 이 코드는 이전 릴리스보다 약 1.9배 빠릅니다.
function timingMovmean A = randn(300); t = sort(rand(300,1)); tic for k = 1:2000 movmean(A,0.1,"SamplePoints",t); end toc end
대략적인 실행 시간은 다음과 같습니다.
R2022b: 1.04초
R2023a: 0.56
코드 실행 시간은 Windows® 10, Intel® Xeon® CPU E5-1650 v4 @ 3.60GHz 테스트 시스템에서 timingMovmean
함수를 호출하여 측정했습니다.
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)