conv2

Синтаксис

C = conv2(A,B)
C = conv2(u,v,A)
C = conv2(___,shape)

Описание

пример

C = conv2(A,B) возвращает двумерную свертку матриц A и B.

пример

C = conv2(u,v,A) сначала применяет операцию свертки к каждому столбцу A с векторным u, и затем это применяет операцию свертки к каждой строке результата с векторным v.

пример

C = conv2(___,shape) возвращает часть свертки согласно shape. Например, C = conv2(A,B,'same') возвращает центральную часть свертки, которая одного размера как A.

Примеры

свернуть все

В приложениях, таких как обработка изображений, может быть полезно сравнить вход свертки непосредственно к выводу. Функция conv2 позволяет вам управлять размером вывода.

Создайте 3х3 случайный матричный A и случайный матричный B 4 на 4. Вычислите полную свертку A и B, который является 6 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

Вычислите центральную часть свертки Csame, который является субматрицей Cfull с тем же размером как A. Csame равен 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

Находящая ребро операция Sobel использует 2D свертку, чтобы обнаружить ребра в изображениях и других 2D данных.

Создайте и постройте 2D опору с внутренней высотой, равной одной.

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

Примените операцию свертки к строкам A с векторным u, и затем примените операцию свертки к строкам результата с векторным v. Свертка извлекает горизонтальные ребра опоры.

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

Чтобы извлечь вертикальные ребра опоры, инвертируйте порядок свертки с u и v.

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

Вычислите и постройте объединенные ребра опоры.

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

Входные параметры

свернуть все

Входной массив, заданный как вектор или матрица.

Типы данных: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
Поддержка комплексного числа: Да

Второй входной массив, заданный как вектор или матрица, чтобы применить операцию свертки с A. Массив B не должен быть одного размера как A.

Типы данных: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
Поддержка комплексного числа: Да

Входной вектор, заданный как строка или вектор-столбец. u применяет операцию свертки с каждым столбцом A.

Типы данных: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
Поддержка комплексного числа: Да

Второй входной вектор, заданный как строка или вектор-столбец. v применяет операцию свертки с каждой строкой свертки u со столбцами A.

Типы данных: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical
Поддержка комплексного числа: Да

Часть свертки, заданная как одно из этих значений:

  • полный Возвратите полную 2D свертку.

  • 'same' — Возвратите центральную часть свертки, которая одного размера как A.

  • 'valid' — Возвратите только части свертки, которые вычисляются без дополненных нулем ребер.

Выходные аргументы

свернуть все

2D свертка, возвращенная как вектор или матрица. Когда A и B являются матрицами, затем свертка, C = conv2(A,B) имеет размер size(A)+size(B)-1. Когда [m,n] = size(A), p = length(u) и q = length(v), затем свертка C = conv2(u,v,A) имеют строки m+p-1 и столбцы n+q-1.

Когда один или несколько входных параметров к conv2 имеют тип single, затем вывод имеет тип single. В противном случае conv2 преобразовывает входные параметры, чтобы ввести double и возвращается, вводят double.

Типы данных: double | single

Больше о

свернуть все

2D Свертка

Для дискретных, двумерных переменных A и B следующее уравнение задает свертку A и B:

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

p и q работают на основе всех значений, которые приводят к легальным индексам A(p,q) и B(j-p+1,k-q+1).

Расширенные возможности

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

Смотрите также

|

Представлено до R2006a