Main Content

conv

fi 객체의 컨벌루션과 다항식 곱셈

설명

예제

c = conv(a,b)는 입력 벡터 ab의 컨벌루션을 반환합니다. 이때 적어도 하나의 입력 벡터는 fi 객체여야 합니다.

예제

c = conv(a,b,shape)shape로 지정된 컨벌루션의 하위 섹션을 반환합니다.

예제

모두 축소

16-탭 FIR 필터를 사용한 22-샘플 시퀀스에 대한 컨벌루션을 구합니다.

x는 워드 길이가 16비트이고 소수부 길이가 15비트인 부호 있는 값의 22-샘플 시퀀스입니다. h는 16-탭 FIR 필터입니다.

u = (pi/4)*[1 1 1 -1 -1 -1 1 -1 -1 1 -1]; 
x = fi(kron(u,[1 1]));
h = firls(15, [0 .1 .2 .5]*2, [1 1 0 0]);

xfi 객체이므로, 컨벌루션 연산을 수행하기 전에 hfi 객체로 형변환할 필요가 없습니다. conv 함수가 최적 정밀도의 스케일링을 사용하여 이를 자동으로 수행합니다.

conv 함수를 사용하여 두 벡터를 컨벌루션합니다.

y = conv(x,h);

연산 결과, 워드 길이가 36비트이고 소수부 길이가 31비트인 부호 있는 fi 객체 y가 생성됩니다. 입력과 연결된 디폴트 fimath 속성에 따라 출력의 numerictype이 결정됩니다. 출력에는 로컬 fimath가 없습니다.

fi 벡터를 만듭니다. ab의 컨벌루션에서 크기가 a와 같은 중앙부를 구합니다.

a = fi([-1 2 3 -2 0 1 2]);
b = fi([2 4 -1 1]);
c = conv(a,b,'same')
c = 

    15     5    -9     7     6     7    -1

          DataTypeMode: Fixed-point: binary point scaling
            Signedness: Signed
            WordLength: 34
        FractionLength: 25

c의 길이는 7입니다. 전체 컨벌루션의 길이는 length(a)+length(b)-1이고, 이 예제에서는 10입니다.

입력 인수

모두 축소

입력 벡터로, 행 벡터 또는 열 벡터로 지정됩니다.

어느 하나의 입력이 내장 데이터형인 경우 conv는 컨벌루션 연산을 수행하기 전에 최적 정밀도 규칙을 사용하여 해당 입력을 fi 객체로 형변환합니다.

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fi
복소수 지원 여부:

컨벌루션의 서브셋으로, 다음 값 중 하나로 지정됩니다.

  • 'full' — 전체 컨벌루션을 반환합니다. 이 옵션이 디폴트 형태입니다.

  • 'same' — 컨벌루션에서 크기가 입력 벡터 a와 같은 중앙부를 반환합니다.

  • 'valid' — 컨벌루션에서 함수가 모서리를 0으로 채우지 않고 계산한 부분만 반환합니다. 이 옵션을 사용하면 출력 벡터 c의 길이는 max(length(a)-max(0,length(b)-1),0)입니다.

데이터형: char

세부 정보

모두 축소

컨벌루션

두 벡터 uv의 컨벌루션은 vu를 가로질러 이동할 때 각 지점 아래의 겹치는 영역을 나타냅니다. 대수적으로 컨벌루션은 계수가 uv의 요소인 다항식의 곱셈과 동일한 연산입니다.

m = length(u)n = length(v)라고 가정해 보겠습니다. 그러면 w는 길이가 m+n-1인 벡터이며 k번째 요소가 다음과 같습니다.

w(k)=ju(j)v(kj+1).

합계는 u(j)v(k-j+1)에 유효한 첨자가 되는 j의 모든 값에 대해 계산됩니다. 구체적으로 j = max(1,k+1-n):1:min(k,m)입니다. m = n인 경우에는 다음과 같습니다.

w(1) = u(1)*v(1)
w(2) = u(1)*v(2)+u(2)*v(1)
w(3) = u(1)*v(3)+u(2)*v(2)+u(3)*v(1)
...
w(n) = u(1)*v(n)+u(2)*v(n-1)+ ... +u(n)*v(1)
...
w(2*n-1) = u(n)*v(n)

알고리즘

다음과 같이 입력과 연결된 fimath 속성에 따라 출력 fi 객체 cnumerictype 속성이 결정됩니다.

  • a 또는 b에 로컬 fimath 객체가 있는 경우 convfimath 객체를 사용하여 중간 수량을 계산하고 cnumerictype 속성을 결정합니다.

  • ab 모두에 연결된 fimath가 없는 경우 conv는 디폴트 fimath를 사용하여 중간 수량을 계산하고 cnumerictype 속성을 결정합니다.

어느 하나의 입력이 내장 데이터형인 경우 conv는 컨벌루션 연산을 수행하기 전에 최적 정밀도 규칙을 사용하여 해당 입력을 fi 객체로 형변환합니다.

출력 fi 객체 c는 항상 디폴트 fimath를 사용합니다.

확장 기능

버전 내역

R2009b에 개발됨

참고 항목