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.0012 0.0043
t1rat = tcnv\tmtx
t1rat = 3.6029
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.0393 0.0249
tmrat = tcnv/tmtx
tmrat = 1.5787
convmtx가 conv보다 약 3배 더 효율적입니다.
입력 인수
입력 벡터로, 행 또는 열로 지정됩니다.
데이터형: single | double
컨벌루션을 수행할 벡터의 길이로, 양의 정수로 지정됩니다.
h가 길이가m인 열 벡터인 경우,A는(m+n-1)×n이고A와 길이가n인 열 벡터x의 곱은h와x의 컨벌루션이 됩니다.h가 길이가m인 행 벡터인 경우,A는n×(m+n-1)이고 길이가n인 행 벡터x와A의 곱은h와x의 컨벌루션이 됩니다.
출력 인수
입력값 h와 벡터 x의 컨벌루션 행렬로, 행렬로 반환됩니다.
알고리즘
convmtx는 함수toeplitz를 사용하여 컨벌루션 행렬을 생성합니다.convmtx는 0 채우기로 경계 조건을 처리합니다.
확장 기능
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
GPU 코드 생성
GPU Coder™를 사용하여 NVIDIA® GPU용 CUDA® 코드를 생성할 수 있습니다.
버전 내역
R2006a 이전에 개발됨
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)