Main Content

Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

convmtx

Matriz de convolución

Descripción

ejemplo

A = convmtx(h,n) devuelve la matriz de convolución, , de tal forma que el producto de y un vector -elemento, , es la convolución de y .AAnxhx

Ejemplos

contraer todo

Calcular una convolución utilizando cuando las señales son vectores es generalmente más eficiente que usar .convconvmtx Para las señales multicanal, podría ser más eficiente.convmtx

Calcular la convolución de dos vectores aleatorios, y , utilizando ambos y .abconvconvmtx Las señales tienen 1000 muestras cada una. Compare los tiempos invertidos por las dos funciones. Elimine las fluctuaciones aleatorias repitiendo el cálculo 30 veces y promediando.

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.0284    0.0492

t1rat = tcnv\tmtx
t1rat = 1.7331 

es aproximadamente dos órdenes de magnitud más eficientes.conv

Repita el ejercicio para el caso donde hay una señal multicanal con 1000 canales.a Optimice el rendimiento mediante la asignación previa.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.4633    0.2608

tmrat = tcnv/tmtx
tmrat = 1.7763 

es aproximadamente tres veces más eficiente que .convmtxconv

Argumentos de entrada

contraer todo

Vector de entrada, especificado como una fila o columna.

Tipos de datos: single | double

Longitud del vector a convolve, especificada como un entero positivo.

  • Si es un vector de columna de longitud , es -by- , y el producto de y un vector de columna, , de longitud es la convolución de y .hmA(m+n-1)nAxnhx

  • Si es un vector de fila de longitud , es -by- , y el producto de un vector de fila, , de longitud con es la convolución de y .hmAn(m+n-1)xnAhx

Argumentos de salida

contraer todo

Matriz de convolución de entrada y vector, devuelta como una matriz.hx

Algoritmos

  • utiliza la función para generar la matriz de convolución.convmtxtoeplitz

  • maneja las condiciones del borde por cero relleno.convmtx

Capacidades ampliadas

Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.

Consulte también

| | | |

Introducido antes de R2006a