Main Content

La traducción de esta página está obsoleta. Haga clic aquí para ver la última versión en inglés.

convmtx

Matriz de convolución

Descripción

ejemplo

A = convmtx(h,n) devuelve la matriz de convolución, A, de modo que el producto de A y un vector de n elementos, x, es la convolución de h y x.

Ejemplos

contraer todo

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.0010    0.0204

t1rat = tcnv\tmtx
t1rat = 20.7976

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.1382    0.0617

tmrat = tcnv/tmtx
tmrat = 2.2404

convmtx es aproximadamente tres veces más eficiente que conv.

Argumentos de entrada

contraer todo

Vector de entrada, especificado como fila o columna.

Tipos de datos: single | double

Longitud del vector que se desea convolucionar, especificada como un entero positivo.

  • Si h es un vector columna de longitud m, A es (m+n-1) por n y el producto de A y un vector columna, x, de longitud n es la convolución de h y x.

  • Si h es un vector fila de longitud m, A es n por (m+n-1) y el producto de un vector fila, x, de longitud n con A es la convolución de h y x.

Argumentos de salida

contraer todo

Matriz de convolución de la entrada h y el vector x, devuelta como una matriz.

Algoritmos

  • convmtx utiliza la función toeplitz 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

Consulte también

| | | |