convmtx

Синтаксис

A = convmtx(h,n)

Описание

пример

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

Примеры

свернуть все

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

Вычислите свертку двух случайных векторов, a и b, с помощью и conv и convmtx. Сигналы имеют 1 000 выборок каждый. Сравните времена, проведенные двумя функциями. Устраните случайные колебания путем повторения вычисления 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.0005    0.0072

t1rat = tcnv\tmtx
t1rat = 14.7338

conv является приблизительно двумя более эффективными порядками величины.

Повторите осуществление для случая, где a является многоканальным сигналом с 1 000 каналов. Оптимизируйте производительность 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.2764    0.0424

tmrat = tcnv/tmtx
tmrat = 6.5221

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

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

свернуть все

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

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

Длина вектора, чтобы применить операцию свертки, заданный как положительное целое число.

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

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

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

свернуть все

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

Алгоритмы

  • convmtx использует функциональный toeplitz, чтобы сгенерировать матрицу свертки.

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

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

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

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

| | | |

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