convmtx
Matriz de convolución
Sintaxis
Descripción
Ejemplos
Cálculo eficiente de la convolución
Calcular la convolución con conv
cuando las señales son vectores es normalmente más eficiente que utilizar convmtx
. Para señales multicanal, convmtx
podría ser más eficiente.
Calcule la convolución de dos vectores aleatorios, a
y b
, utilizando tanto conv
como convmtx
. Las señales tienen 1000 muestras cada una. Compare el tiempo gastado por las dos funciones. Elimine las fluctuaciones aleatorias repitiendo el cálculo 30 veces y obteniendo el promedio.
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.0005 0.0070
t1rat = tcnv\tmtx
t1rat = 13.4829
conv
es aproximadamente dos órdenes de magnitud más eficiente.
Repita el ejercicio para un caso en el que a
es una señal multicanal con 1000 canales. Optimice el rendimiento de conv
mediante preasignación.
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.0605 0.0585
tmrat = tcnv/tmtx
tmrat = 1.0353
convmtx
es aproximadamente tres veces más eficiente que conv
.
Argumentos de entrada
h
— Vector de entrada
vector
Vector de entrada, especificado como fila o columna.
Tipos de datos: single
| double
n
— Longitud del vector que se desea convolucionar
entero positivo
Longitud del vector que se desea convolucionar, especificada como un entero positivo.
Si
h
es un vector columna de longitudm
,A
es(m+n-1)
porn
y el producto deA
y un vector columna,x
, de longitudn
es la convolución deh
yx
.Si
h
es un vector fila de longitudm
,A
esn
por(m+n-1)
y el producto de un vector fila,x
, de longitudn
conA
es la convolución deh
yx
.
Argumentos de salida
A
— Matriz de convolución
matriz
Matriz de convolución de la entrada h
y el vector x
, devuelta como una matriz.
Algoritmos
convmtx
utiliza la funcióntoeplitz
para generar la matriz de convolución.convmtx
procesa condiciones de borde mediante relleno de ceros.
Capacidades ampliadas
Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.
Historial de versiones
Introducido antes de R2006a
Abrir ejemplo
Tiene una versión modificada de este ejemplo. ¿Desea abrir este ejemplo con sus modificaciones?
Comando de MATLAB
Ha hecho clic en un enlace que corresponde a este comando de MATLAB:
Ejecute el comando introduciéndolo en la ventana de comandos de MATLAB. Los navegadores web no admiten comandos de 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)