conv2

Описание

пример

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
Поддержка комплексного числа: Да

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

  • 'full' — Возвратите полную 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™.

Генерация кода графического процессора
Сгенерируйте код CUDA® для NVIDIA® графические процессоры с помощью GPU Coder™.

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

|

Представлено до R2006a
Для просмотра документации необходимо авторизоваться на сайте