함수를 사용하지 않고 MATLAB에서 컨볼루션을 적용하는 방법

수학 방정식의 클로즈업

MATLAB에는 사전 구축된 컨볼루션 함수가 포함되어 있습니다.

이미지 크레디트: 이미지/컴스톡/게티 이미지

컨볼루션은 한 함수가 다른 함수 위로 이동할 때 겹치는 것과 관련하여 두 함수를 혼합하는 수학 연산입니다. MATLAB에는 사전 구축된 컨볼루션 함수가 포함되어 있지만 이산 컨볼루션 적분을 직접 계산할 수 있습니다. 두 함수 f와 g의 이산 컨볼루션은 f(j) * g(k-j)의 0에서 j 범위에 대한 합으로 정의됩니다.

1 단계

컨벌루션하려는 두 함수를 포함하는 두 벡터 f와 g를 정의합니다. f와 g의 길이가 같을 필요는 없습니다. 컨볼루션 결과의 길이 k는 f와 g의 길이의 합보다 1이 작습니다.

오늘의 비디오

m = 길이(f); n = 길이(g); k = m + n - 1;

2 단계

컨볼루션이 발생할 범위 j를 정의합니다. j의 값은 컨볼루션될 두 함수 f(j) 및 g(k+1-n)의 첨자가 유효한 범위입니다. k에 1을 더한 값은 MATLAB이 0이 아닌 1에서 벡터 인덱싱을 시작한다는 사실을 설명하기 위한 것입니다.

j = 최대(1,k+1-n):최소(k, m)

3단계

컨볼루션 결과를 위한 공간을 미리 할당합니다.

my_result = 0(k);

4단계

k 값을 반복하는 for 루프를 작성하십시오.

result_index = 1:k의 경우

5단계

j의 모든 값에 대한 컨볼루션을 계산합니다.

my_result(k) = 합(f(j) .* g(k-j+1));

6단계

"end" 명령으로 for 루프를 닫습니다.