movprod
이동 곱
구문
설명
M = movprod(는 국소 A,k)k점 곱을 반환합니다. 여기서 각 곱은 A의 인접 요소들이 포함된 길이 k의 슬라이딩 윈도우에서 계산됩니다. M은 A와 크기가 동일합니다.
k가 홀수면 윈도우의 중심은 현재 위치의 요소가 됩니다. k가 짝수면 윈도우의 중심은 현재 요소 및 이전 요소가 됩니다. 윈도우를 다 채우기에 요소가 부족할 때는 윈도우 크기가 끝점에서 자동으로 잘립니다. 윈도우가 잘렸을 때는 윈도우를 채우는 요소들에 대해서만 곱를 구합니다.
A가 벡터인 경우movprod는 벡터A의 길이를 따라 연산을 수행합니다.A가 다차원 배열인 경우movprod는 크기가 1이 아닌A의 첫 번째 차원을 따라 연산을 수행합니다.A가 테이블 또는 타임테이블인 경우movprod는A의 변수를 따라 연산을 수행합니다. (R2025a 이후)
M = movprod(___,은 위에 열거된 모든 구문에서 연산을 수행할 dim)A의 차원을 지정합니다. 예를 들어, A가 행렬인 경우, movprod(A,k,2)는 A의 열에 걸쳐 연산을 수행하며 각 행에 대한 k-요소 슬라이딩 곱을 계산합니다.
M = movprod(___,는 nanflag)A의 NaN 값을 포함시킬지 또는 생략할지 여부를 지정합니다. 예를 들어, movprod(A,k,"omitnan")은 각 곱을 계산할 때 NaN 값을 무시합니다. 기본적으로 movprod는 NaN 값을 포함합니다.
M = movprod(___,는 하나 이상의 이름-값 쌍의 인수를 사용하여 이동 곱에 대한 추가 파라미터를 지정합니다. 예를 들어, Name,Value)x가 시간 값의 벡터인 경우 movprod(A,k,"SamplePoints",x)는 x에 있는 시간을 기준으로 이동 곱을 계산합니다.
예제
행 벡터의 3점 중심 이동 곱을 계산합니다. 끝점에 있는 윈도우의 요소가 3개 미만일 때는 남은 요소들의 곱을 구합니다.
A = [1 2 4 -1 -2 -3 -1 3 2 1]; M = movprod(A,3)
M = 1×10
2 8 -8 8 -6 -6 9 -6 6 2
행 벡터의 3점 후행 곱을 계산합니다. 끝점에 있는 윈도우의 요소가 3개 미만일 때는 남은 요소들의 곱을 구합니다.
A = [1 2 1 -1 -2 -3 -1 3 4 1]; M = movprod(A,[2 0])
M = 1×10
1 2 2 -2 2 -6 -6 9 -12 12
행렬의 각 행에 대한 3점 중심 이동 곱을 계산합니다. 차원 인수는 2이고, 이것은 A의 열 방향으로 윈도우를 슬라이딩합니다. 윈도우가 첫 번째 행에서 시작하고, 행 끝까지 수평으로 슬라이딩한 후, 두 번째 행으로 이동합니다.
A = [1 2 1; -1 -2 -3; -1 3 4]
A = 3×3
1 2 1
-1 -2 -3
-1 3 4
M = movprod(A,3,2)
M = 3×3
2 2 2
2 -6 6
-3 -12 12
NaN 값을 포함하는 행 벡터를 만듭니다.
A = [4 8 NaN -1 -2 -3 NaN 3 4 5];
NaN 값을 제외하고 벡터의 3점 중심 이동 곱을 계산합니다. NaN 값을 포함하는 윈도우의 경우 movprod는 NaN이 아닌 요소에 대해 계산을 수행합니다.
M = movprod(A,3,"omitnan")M = 1×10
32 32 -8 2 -6 6 -9 12 60 20
시간 벡터 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 = 1×6 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 = movprod(A,k,"SamplePoints",t)M = 1×6
32 192 -48 12 -6 6
행 벡터의 3점 중심 이동 곱을 계산하되, 3개 미만의 점을 사용하는 모든 계산을 출력값에서 무시합니다. 즉, 요소를 3개 가진 완전한 윈도우에서 계산된 곱만 반환하고, 끝점에서의 계산은 무시합니다.
A = [1 2 1 -1 -2 -3 -1 3 4 1]; M = movprod(A,3,"Endpoints","discard")
M = 1×8
2 -2 2 -6 -6 9 -12 12
마방진의 열에서 테이블을 생성합니다.
A = magic(3); T = array2table(A)
T=3×3 table
A1 A2 A3
__ __ __
8 1 6
3 5 7
4 9 2
movprod를 사용하여 테이블 변수의 이동 곱을 계산합니다.
M = movprod(T,3)
M=3×3 table
A1 A2 A3
__ __ __
24 5 42
96 45 84
12 45 14
지정된 변수에 대해서만 이동 곱을 계산하려면 DataVariables 이름-값 인수를 지정하십시오.
M2 = movprod(T,3,DataVariables=["A2" "A3"])
M2=3×3 table
A1 A2 A3
__ __ __
8 5 42
3 45 84
4 45 14
이동 곱으로 값을 대체하는 대신 테이블에 추가하려면 ReplaceValues를 false로 지정하십시오.
M3 = movprod(T,3,ReplaceValues=false)
M3=3×6 table
A1 A2 A3 A1_movprod A2_movprod A3_movprod
__ __ __ __________ __________ __________
8 1 6 24 5 42
3 5 7 96 45 84
4 9 2 12 45 14
입력 인수
입력 데이터로, 벡터, 행렬, 다차원 배열, table형 또는 timetable형으로 지정됩니다.
데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | table | timetable
윈도우 길이로, 숫자형 또는 duration형 스칼라로 지정됩니다. k가 양의 정수 스칼라일 때 중심 위치에서의 곱은 현재 위치의 요소와 주위의 요소를 포함합니다.
예를 들어, movprod(A,3)은 국소 3점 곱으로 구성된 배열을 계산합니다.

방향 윈도우 길이로, 2개 요소를 포함하는 숫자형 또는 duration형 행 벡터로 지정됩니다. kb와 kf가 양의 정수 스칼라일 때 계산은 kb+kf+1개 요소에 대해 이루어집니다. 계산은 현재 위치의 요소, 현재 위치 앞의 kb개 요소, 그리고 현재 위치 뒤의 kf개 요소를 포함합니다.
예를 들어, movprod(A,[2 1])은 국소 4점 곱으로 구성된 배열을 계산합니다.
![movprod(A,[2 1]) computation. The elements in the sample window are 4, 1, 3, and 2, so the resulting local product is 24.](movprod_windowing.png)
연산을 수행할 차원으로, 양의 정수 스칼라로 지정됩니다. 차원을 지정하지 않을 경우, 디폴트 값은 크기가 1이 아닌 첫 번째 배열 차원이 됩니다.
m×n 입력 행렬 A가 있다고 가정합니다.
movprod(A,k,1)은A의 각 열에 대해k-요소 슬라이딩 곱을 계산하고m×n행렬을 반환합니다.
movprod(A,k,2)은A의 각 행에 대해k-요소 슬라이딩 곱을 계산하고m×n행렬을 반환합니다.
A가 테이블 또는 타임테이블이면 dim을 지정할 수 없습니다. movprod 함수는 항상 테이블 및 타임테이블의 변수를 따라 연산을 수행합니다. (R2025a 이후)
누락값 조건으로, 다음 값 중 하나로 지정됩니다.
"includemissing"또는"includenan"— 각 곱을 계산할 때A의NaN값을 포함합니다. 윈도우의 요소가 하나라도NaN인 경우 이에 대응하는M의 요소도NaN입니다."includemissing"과"includenan"은 동일하게 동작합니다."omitmissing"또는"omitnan"—A의NaN값을 무시하고, 더 적은 수의 점을 대상으로 각 곱을 계산합니다. 윈도우의 모든 요소가NaN인 경우 이에 대응하는M의 요소는 1입니다."omitmissing"과"omitnan"은 동일하게 동작합니다.
이름-값 인수
선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.
R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name을 따옴표로 묶으십시오.
예: M = movprod(A,k,"Endpoints","fill")
끝점 부근의 윈도우 처리 방법으로, 다음 옵션 중 하나로 지정됩니다.
| 값 | 설명 |
|---|---|
"shrink" | 입력값의 끝점 근처의 윈도우 크기를 실제로 존재하는 요소만 포함하도록 축소합니다. |
"discard" | 윈도우가 실제로 존재하는 요소들과 완전히 겹치지 않을 때는 어떤 곱 값도 출력하지 않습니다.
|
"fill" | 존재하지 않는 요소를 NaN으로 바꿉니다. |
| 숫자형 스칼라 또는 논리형 스칼라 | 존재하지 않는 요소를 지정된 숫자형 값 또는 논리값으로 바꿉니다. |
곱을 계산할 샘플 점으로, 벡터로 지정됩니다. 샘플 점은 A에 있는 데이터의 위치를 나타냅니다. 샘플 점은 균일하게 샘플링할 필요가 없습니다. 기본적으로, 샘플 점 벡터는 [1 2 3 ... ]입니다.
이동 윈도우는 샘플 점을 기준으로 하여 정의되며, 이 샘플 점은 정렬되고 고유한 요소를 가져야 합니다. 예를 들어, t가 입력 데이터에 해당하는 시간 벡터인 경우 movprod(rand(1,10),3,"SamplePoints",t)에는 t(i)-1.5 ~ t(i)+1.5 범위의 시간 구간을 나타내는 윈도우가 있습니다.
샘플 점 벡터의 데이터형이 datetime형 또는 duration형인 경우 이동 윈도우 길이는 duration형이어야 합니다.
샘플 점의 간격이 균일하지 않을 때 Endpoints를 지정하면 Endpoints의 값은 "shrink"입니다.
R2025a 이후
연산을 수행할 테이블 또는 타임테이블 변수로, 다음 표에 있는 옵션 중 하나로 지정됩니다.
DataVariables를 지정하지 않으면movprod함수는 모든 변수에 대해 연산을 수행합니다. 이 동작은 디폴트 동작입니다.DataVariables를 지정하면movprod함수는 지정된 변수에 대해서만 연산을 수행합니다.DataVariables로 지정되지 않은 다른 변수는 수정되지 않은 채 출력값으로 전달됩니다.
| 인덱싱 방식 | 지정할 값 | 예제 |
|---|---|---|
변수 이름 |
|
|
변수 인덱스 |
|
|
함수 핸들 |
|
|
변수 유형 |
|
|
R2025a 이후
값 바꾸기 표시자로, A가 테이블 또는 타임테이블이면 다음 값 중 하나로 지정됩니다.
true또는1— 출력 테이블 또는 타임테이블에서 입력 테이블 또는 타임테이블 변수를movprod에서 얻은 출력값이 포함된 변수로 바꿉니다.false또는0—movprod에서 얻은 출력값을 포함하는 변수를 출력 테이블 또는 타임테이블에 추가합니다.
벡터, 행렬 또는 다차원 배열 입력 데이터에는 ReplaceValues가 지원되지 않습니다.
확장 기능
이 함수는 tall형 배열을 지원하지만 다음과 같은 제한 사항이 있습니다.
SamplePoints,DataVariables및ReplaceValues이름-값 인수는 지원되지 않습니다.테이블 및 타임테이블 입력값은 지원되지 않습니다.
자세한 내용은 tall형 배열 항목을 참조하십시오.
사용법 관련 참고 및 제한 사항:
DataVariables및ReplaceValues이름-값 인수는 지원되지 않습니다.테이블 및 타임테이블 입력값은 지원되지 않습니다.
이 함수는 스레드 기반 환경을 완전히 지원합니다. 자세한 내용은 스레드 기반 환경에서 MATLAB 함수 실행하기 항목을 참조하십시오.
movprod 함수는 GPU 배열 입력값을 지원하지만 다음과 같은 사용법 관련 참고 및 제한 사항이 있습니다.
SamplePoints,DataVariables및ReplaceValues이름-값 인수는 지원되지 않습니다.테이블 및 타임테이블 입력값은 지원되지 않습니다.
자세한 내용은 GPU에서 MATLAB 함수 실행하기 (Parallel Computing Toolbox) 항목을 참조하십시오.
사용법 관련 참고 및 제한 사항:
DataVariables및ReplaceValues이름-값 인수는 지원되지 않습니다.테이블 및 타임테이블 입력값은 지원되지 않습니다.
자세한 내용은 분산 배열을 사용하여 MATLAB 함수 실행 (Parallel Computing Toolbox) 항목을 참조하십시오.
버전 내역
R2017a에 개발됨연산을 수행할 입력값으로 숫자형 데이터가 포함된 테이블과 타임테이블을 지정할 수 있습니다. 기본적으로 movprod 함수는 테이블 또는 타임테이블의 모든 변수에 대해 연산을 수행합니다. 그러나 연산을 수행할 특정 변수를 지정할 수도 있습니다. movprod에서 얻은 출력값을 출력 테이블 또는 타임테이블의 새 변수로 추가할 수도 있습니다.
각 곱을 구할 때 "includemissing" 또는 "omitmissing" 옵션을 사용하여 입력 배열의 누락값을 포함하거나 생략합니다. 이러한 옵션은 각각 "includenan" 및 "omitnan" 옵션과 동일하게 동작합니다.
샘플 점이 있을 때 movprod 함수로 행렬에 대해 계산할 때의 성능이 향상되었습니다.
예를 들어, 다음 코드는 대응하는 샘플 점을 사용하여 300×300 행렬의 이동 곱을 계산합니다. 이 코드는 이전 릴리스보다 약 2.8배 빠릅니다.
function timingMovprod A = randn(300); t = sort(rand(300,1)); tic for k = 1:2000 movprod(A,0.1,"SamplePoints",t); end toc end
대략적인 실행 시간은 다음과 같습니다.
R2022b: 0.92초
R2023a: 0.33
코드 실행 시간은 Windows® 10, Intel® Xeon® CPU E5-1650 v4 @ 3.60GHz 테스트 시스템에서 timingMovprod 함수를 호출하여 측정했습니다.
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
웹사이트 선택
번역된 콘텐츠를 보고 지역별 이벤트와 혜택을 살펴보려면 웹사이트를 선택하십시오. 현재 계신 지역에 따라 다음 웹사이트를 권장합니다:
또한 다음 목록에서 웹사이트를 선택하실 수도 있습니다.
사이트 성능 최적화 방법
최고의 사이트 성능을 위해 중국 사이트(중국어 또는 영어)를 선택하십시오. 현재 계신 지역에서는 다른 국가의 MathWorks 사이트 방문이 최적화되지 않았습니다.
미주
- América Latina (Español)
- Canada (English)
- United States (English)
유럽
- 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)