exponenta event banner

convmtx

Синтаксис

Описание

пример

A = convmtx(h,n) возвращает матрицу свертки, A, такой, что продукт A и n-элементный вектор, x, является сверткой h и x.

Примеры

свернуть все

Вычисление свертки с помощью conv когда сигналы являются векторами, как правило, более эффективно, чем использование convmtx. Для многоканальных сигналов, convmtx может быть более эффективным.

Вычислите свертку двух случайных векторов, a и b, используя оба conv и convmtx. Сигналы имеют 1000 выборок каждый. Сравните время, затраченное двумя функциями. Устранение случайных флуктуаций путем повторения расчета 30 раз и усреднения.

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.0006    0.0139

t1rat = tcnv\tmtx
t1rat = 24.6858

conv примерно на два порядка эффективнее.

Повторите упражнение для случая, когда a является многоканальным сигналом с 1000 каналами. Оптимизировать convИсполнение путем предварительного распределения.

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.2303    0.0274

tmrat = tcnv/tmtx
tmrat = 8.4084

convmtx примерно в три раза эффективнее, чем conv.

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

свернуть все

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

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

Длина вектора для свертки, заданная как положительное целое число.

  • Если h - вектор столбца длины m, A является (m+n-1)около-n, и продукт A и вектор-столбец, x, длины n - свёртка h и x.

  • Если h - вектор строки длины m, A является nоколо-(m+n-1)и произведение вектора строки, x, длины n с A - свёртка h и x.

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

свернуть все

Матрица свертки входа h и вектор x, возвращается в виде матрицы.

Алгоритмы

  • convmtx использует функцию toeplitz для формирования матрицы свертки.

  • convmtx обрабатывает граничные условия путем заполнения нулем.

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

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.

См. также

| | | |

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