convmtx
컨벌루션 행렬
설명
예제
효율적인 컨벌루션 계산
신호가 벡터인 경우 conv
를 사용하면 convmtx
를 사용하는 것보다 보통 더 효율적으로 컨벌루션을 계산할 수 있습니다. 다중채널 신호의 경우, convmtx
가 더 효율적일 수 있습니다.
conv
와 convmtx
를 모두 사용하여 두 개의 확률 벡터 a
와 b
에 대한 컨벌루션을 계산합니다. 이 신호는 각각 1000개의 샘플을 가집니다. 두 함수에 소요된 시간을 비교합니다. 계산을 30번 반복하고 이에 대한 평균값을 구해 불규칙적인 변동을 제거합니다.
Nt = 30; Na = 1000; Nb = 1000; tcnv = 0; tmtx = 0; for kj = 1:Nt a = randn(Na,1); b = randn(Nb,1); tic n = conv(a,b); tcnv = tcnv+toc; tic c = convmtx(b,Na); d = c*a; tmtx = tmtx+toc; end t1col = [tcnv tmtx]/Nt
t1col = 1×2
0.0009 0.0352
t1rat = tcnv\tmtx
t1rat = 40.3557
conv
가 수십 배 더 효율적입니다.
a
가 1000개 채널을 갖는 다중채널 신호인 경우에 대해 위의 예제를 반복해 봅니다. 사전 할당을 수행하여 conv
의 성능을 최적화합니다.
Nchan = 1000; tcnv = 0; tmtx = 0; n = zeros(Na+Nb-1,Nchan); for kj = 1:Nt a = randn(Na,Nchan); b = randn(Nb,1); tic for k = 1:Nchan n(:,k) = conv(a(:,k),b); end tcnv = tcnv+toc; tic c = convmtx(b,Na); d = c*a; tmtx = tmtx+toc; end tmcol = [tcnv tmtx]/Nt
tmcol = 1×2
0.1970 0.0841
tmrat = tcnv/tmtx
tmrat = 2.3428
convmtx
가 conv
보다 약 3배 더 효율적입니다.
입력 인수
h
— 입력 벡터
벡터
입력 벡터로, 행 또는 열로 지정됩니다.
데이터형: single
| double
n
— 컨벌루션을 수행할 벡터의 길이
양의 정수
컨벌루션을 수행할 벡터의 길이로, 양의 정수로 지정됩니다.
h
가 길이가m
인 열 벡터인 경우,A
는(m+n-1)
×n
이고A
와 길이가n
인 열 벡터x
의 곱은h
와x
의 컨벌루션이 됩니다.h
가 길이가m
인 행 벡터인 경우,A
는n
×(m+n-1)
이고 길이가n
인 행 벡터x
와A
의 곱은h
와x
의 컨벌루션이 됩니다.
출력 인수
A
— 컨벌루션 행렬
행렬
입력값 h
와 벡터 x
의 컨벌루션 행렬로, 행렬로 반환됩니다.
알고리즘
convmtx
는 함수toeplitz
를 사용하여 컨벌루션 행렬을 생성합니다.convmtx
는 0 채우기로 경계 조건을 처리합니다.
확장 기능
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
버전 내역
R2006a 이전에 개발됨
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)