conv
fi
객체의 컨벌루션과 다항식 곱셈
설명
예제
16-탭 FIR 필터를 사용한 22-샘플 시퀀스에 대한 컨벌루션
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]);
x
가 fi
객체이므로, 컨벌루션 연산을 수행하기 전에 h
를 fi
객체로 형변환할 필요가 없습니다. conv
함수가 최적 정밀도의 스케일링을 사용하여 이를 자동으로 수행합니다.
conv
함수를 사용하여 두 벡터를 컨벌루션합니다.
y = conv(x,h);
연산 결과, 워드 길이가 36비트이고 소수부 길이가 31비트인 부호 있는 fi
객체 y
가 생성됩니다. 입력과 연결된 디폴트 fimath
속성에 따라 출력의 numerictype
이 결정됩니다. 출력에는 로컬 fimath
가 없습니다.
두 fi
벡터에 대한 컨벌루션의 중앙부
두 fi
벡터를 만듭니다. a
와 b
의 컨벌루션에서 크기가 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입니다.
입력 인수
a,b
— 입력 벡터
벡터
입력 벡터로, 행 벡터 또는 열 벡터로 지정됩니다.
어느 하나의 입력이 내장 데이터형인 경우 conv
는 컨벌루션 연산을 수행하기 전에 최적 정밀도 규칙을 사용하여 해당 입력을 fi
객체로 형변환합니다.
데이터형: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| fi
복소수 지원 여부: 예
shape
— 컨벌루션의 서브셋
'full'
(디폴트 값) | 'same'
| 'valid'
컨벌루션의 서브셋으로, 다음 값 중 하나로 지정됩니다.
'full'
— 전체 컨벌루션을 반환합니다. 이 옵션이 디폴트 형태입니다.'same'
— 컨벌루션에서 크기가 입력 벡터a
와 같은 중앙부를 반환합니다.'valid'
— 컨벌루션에서 함수가 모서리를 0으로 채우지 않고 계산한 부분만 반환합니다. 이 옵션을 사용하면 출력 벡터c
의 길이는max(length(a)-max(0,length(b)-1),0)
입니다.
데이터형: char
세부 정보
컨벌루션
두 벡터 u
와 v
의 컨벌루션은 v
가 u
를 가로질러 이동할 때 각 지점 아래의 겹치는 영역을 나타냅니다. 대수적으로 컨벌루션은 계수가 u
와 v
의 요소인 다항식의 곱셈과 동일한 연산입니다.
m = length(u)
및 n = length(v)
라고 가정해 보겠습니다. 그러면 w
는 길이가 m+n-1
인 벡터이며 k
번째 요소가 다음과 같습니다.
합계는 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
객체 c
의 numerictype
속성이 결정됩니다.
a
또는b
에 로컬fimath
객체가 있는 경우conv
는fimath
객체를 사용하여 중간 수량을 계산하고c
의numerictype
속성을 결정합니다.a
와b
모두에 연결된fimath
가 없는 경우conv
는 디폴트fimath
를 사용하여 중간 수량을 계산하고c
의numerictype
속성을 결정합니다.
어느 하나의 입력이 내장 데이터형인 경우 conv
는 컨벌루션 연산을 수행하기 전에 최적 정밀도 규칙을 사용하여 해당 입력을 fi
객체로 형변환합니다.
출력 fi
객체 c
는 항상 디폴트 fimath
를 사용합니다.
확장 기능
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
사용법 관련 참고 및 제한 사항:
제어하는
fimath
의SumMode
속성이SpecifyPrecision
또는KeepLSB
로 설정된 경우에만 가변 크기 입력이 지원됩니다.가변 크기 신호의 경우 생성된 코드와 MATLAB® 간에 결과가 다를 수 있습니다.
생성된 코드에서 가변 크기 신호의 출력은 제어하는
fimath
의SumMode
속성을 사용하여 계산됩니다.두 입력이 비 스칼라인 경우 MATLAB에서 가변 크기 신호의 출력은 제어하는
fimath
의SumMode
속성을 사용하여 계산됩니다. 그러나 어느 하나의 입력이 스칼라인 경우 MATLAB은 제어하는fimath
의ProductMode
를 사용하여 출력을 계산합니다.
버전 내역
R2009b에 개발됨
참고 항목
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)