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))

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

свернуть все

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

Типы данных: удвойтесь | единственный | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | логический
Поддержка комплексного числа: Да

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

Типы данных: удвойтесь | единственный | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | логический
Поддержка комплексного числа: Да

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

Типы данных: удвойтесь | единственный | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | логический
Поддержка комплексного числа: Да

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

Типы данных: удвойтесь | единственный | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | логический
Поддержка комплексного числа: Да

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

  • полный Возвратите полную 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) = ∑p∑qA (p, q) B (j−p+1, k−q+1)

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

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

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

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

|

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

Была ли эта тема полезной?