Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

conv2

Descripción

C = conv2(A,B) devuelve la convolución bidimensional de las matrices A y B.

  • Si A es una matriz y B es un vector fila (o A es un vector fila y B es una matriz), C es la convolución de cada fila de la matriz con el vector.

  • Si A es una matriz y B es un vector columna (o A es un vector columna y B es una matriz), C es la convolución de cada columna de la matriz con el vector.

ejemplo

C = conv2(u,v,A) primero convoluciona cada columna de A con el vector u y luego convoluciona cada fila del resultado con el vector v. Este comportamiento se aplica independientemente de si u o v es un vector fila o columna.

ejemplo

C = conv2(___,shape) devuelve una subsección de la convolución según shape. Por ejemplo, C = conv2(A,B,"same") devuelve la parte central de la convolución, que tiene el mismo tamaño que A.

ejemplo

Ejemplos

contraer todo

En aplicaciones como el procesamiento de imágenes, puede ser útil comparar la entrada de una convolución directamente con la salida. La función conv2 permite controlar el tamaño de la salida.

Cree una matriz aleatoria A de 3 por 3 y otra matriz aleatoria B de 4 por 4. Calcule la convolución completa de A y B, que es una matriz de 6 por 6.

A = rand(3);
B = rand(4);
Cfull = conv2(A,B)
Cfull = 6×6

    0.7861    1.2768    1.4581    1.0007    0.2876    0.0099
    1.0024    1.8458    3.0844    2.5151    1.5196    0.2560
    1.0561    1.9824    3.5790    3.9432    2.9708    0.7587
    1.6790    2.0772    3.0052    3.7511    2.7593    1.5129
    0.9902    1.1000    2.4492    1.6082    1.7976    1.2655
    0.1215    0.1469    1.0409    0.5540    0.6941    0.6499

Calcule la parte central de la convolución Csame, que es una submatriz de Cfull con el mismo tamaño que A. Csame es igual a Cfull(3:5,3:5).

Csame = conv2(A,B,"same")
Csame = 3×3

    3.5790    3.9432    2.9708
    3.0052    3.7511    2.7593
    2.4492    1.6082    1.7976

La operación de búsqueda de bordes de Sobel utiliza una convolución 2D para detectar bordes en imágenes y otros datos 2D.

Cree y represente un pedestal 2D con altura interior igual a uno.

A = zeros(10);
A(3:7,3:7) = ones(5);
mesh(A)

Convolucione las filas de A con el vector u y, a continuación, convolucione las filas del resultado con el vector v. La convolución extrae los bordes horizontales del pedestal.

u = [1 0 -1]';
v = [1 2 1];
Ch = conv2(u,v,A);
mesh(Ch)

Para extraer los bordes verticales del pedestal, invierta el orden de convolución con u y v.

Cv = conv2(v,u,A);
mesh(Cv)

Calcule y represente los bordes combinados del pedestal.

figure
mesh(sqrt(Ch.^2 + Cv.^2))

Argumentos de entrada

contraer todo

Arreglo de entrada, especificado como vector o matriz.

Tipos de datos: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
Soporte de números complejos:

Segundo arreglo de entrada, especificado como un vector o una matriz que convolucionar con A. El arreglo B no tiene que ser del mismo tamaño que A.

Tipos de datos: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
Soporte de números complejos:

Vector de entrada, especificado como vector fila o columna. u convoluciona con cada columna de A.

Tipos de datos: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
Soporte de números complejos:

Segundo vector de entrada, especificado como vector fila o columna. v convoluciona con cada fila de la convolución de u con las columnas de A.

Tipos de datos: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
Soporte de números complejos:

Subsección de la convolución, especificada como uno de estos valores:

  • "full": devuelve la convolución 2D completa.

  • "same": devuelve la parte central de la convolución, que tiene el mismo tamaño que A.

  • "valid": devuelve solo las partes de la convolución que se calculan sin los bordes rellenados con ceros.

Argumentos de salida

contraer todo

Convolución 2D, devuelta como vector o matriz. Cuando A y B son matrices, la convolución C = conv2(A,B) tiene el tamaño size(A)+size(B)-1. Cuando [m,n] = size(A), p = length(u) y q = length(v), la convolución C = conv2(u,v,A) tiene m+p-1 filas y n+q-1 columnas.

Cuando uno o más argumentos de entrada a conv2 son de tipo single, la salida es de tipo single. En caso contrario, conv2 convierte las entradas al tipo double y devuelve el tipo double.

Tipos de datos: double | single

Más acerca de

contraer todo

Convolución 2D

Para matrices discretas bidimensionales A y B, la siguiente ecuación define la convolución de A y B:

C(j,k)=pqA(p,q)B(jp+1,kq+1)

p y q recorren todos los valores que dan lugar a subíndices legales de A(p,q) y B(j-p+1,k-q+1).

Usando esta definición, conv2 calcula la convolución directa de dos matrices en lugar de la convolución basada en FFT.

Capacidades ampliadas

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

Generación de código de GPU
Genere código CUDA® para GPU NVIDIA® mediante GPU Coder™.

Historial de versiones

Introducido antes de R2006a

Consulte también

|