Задержка входного сигнала с помощью блока Переменная дробная задержка. Каждое значение задержки является уникальным и может варьироваться от выборки к выборке в системе координат и может варьироваться в разных каналах. Можно вычислить несколько задержанных версий одного и того же входного сигнала одновременно, передав задержку входа с соответствующей размерностью.
Считайте, что вход является случайным сигналом с одним каналом и форматом кадра 10. Применить задержку 4,8 и 8,2 выборки одновременно.
Откройте модель.
model = 'MultitapFractionalDelay';
open_system(model)
Запустите модель.
input = randn(10,1) %#ok
input = 0.5377 1.8339 -2.2588 0.8622 0.3188 -1.3077 -0.4336 0.3426 3.5784 2.7694
delayVec = [4.8 8.2]; %#ok
sim(model)
display(output)
output = 0 0 0 0 0 0 0 0 0.1075 0 0.7969 0 1.0153 0 -1.6346 0 0.7535 0.4301 -0.0065 1.5746
Каждый канал в выходе задерживается на 4,8 и 8,2 выборки, соответственно. Блок использует метод интерполяции 'Linear', чтобы вычислить задержанное значение. Для получения дополнительной информации смотрите 'Алгоритмы' на странице блока Переменная дробная задержка.
Для того же вектора задержки, если вход имеет 2 канала, каждый элемент вектора задержки применяется к соответствующему каналу во входе.
input = randn(10,2);
sim(model); display(output);
output = 0 0 0 0 0 0 0 0 -0.2700 0 -0.4729 0 2.5730 0 0.5677 0 0.0925 0.5372 0.5308 -0.8317
Чтобы вычислить несколько задержанные версии двумерного входного сигнала, передайте вектор задержки как трехмерный массив. Третья размерность содержит отводы или задержки для применения к сигналу. Если Вы передаете размерность трети неединичного предмета (1 на 1 на P), где P представляет количество сигналов, тот же сигнал применен через все каналы. Передайте задержки [4.8 8.2] в третьей размерности.
clear delayVec; delayVec(1,1,1) = 4.8; delayVec(1,1,2) = 8.2; %#ok whos delayVec
Name Size Bytes Class Attributes delayVec 1x1x2 16 double
delayVec
массив 1 на 1 на 2. Передайте двумерный вход в Variable Fractional Delay
блок с этим вектором задержки.
sim(model) display(output)
output(:,:,1) = 0 0 0 0 0 0 0 0 -0.2700 0.1343 -0.4729 0.2957 2.5730 -0.8225 0.5677 0.8998 0.0925 1.4020 0.5308 0.5981 output(:,:,2) = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.0799 0.5372 2.1580 -0.8317
whos output
Name Size Bytes Class Attributes output 10x2x2 320 double
output(:,:,1)
представляет входной сигнал, задержанный на 4,8 выборки. output(:,:,2)
представляет входной сигнал, задержанный на 8,2 выборки. Та же задержка применяется по всем каналам.
В сложение, если вы передаете не синглтонное второе измерение (1 на L-на-P), где L - количество входа каналов, ответвления варьируются между каналами. Примените векторы задержки [2.3 3,5] и [4.4 5.6], чтобы вычислить две задержанные версии входного сигнала.
clear delayVec; delayVec(1,1,1) = 2.3; delayVec(1,2,1) = 3.5; delayVec(1,1,2) = 4.4; delayVec(1,2,2) = 5.6; %#ok whos delayVec
Name Size Bytes Class Attributes delayVec 1x2x2 32 double
sim(model) display(output)
output(:,:,1) = 0 0 0 0 -0.9449 0 1.7195 0.3357 1.4183 -0.2680 0.1735 -0.2451 0.4814 1.1737 0.0709 1.0596 -0.1484 0.7618 1.0055 0.8808 output(:,:,2) = 0 0 0 0 0 0 0 0 -0.8099 0 1.2810 0.2686 1.6492 -0.0801 0.2523 -0.4376 0.4036 1.0824 0.1629 1.1737
whos output
Name Size Bytes Class Attributes output 10x2x2 320 double
выход (:,:, 1) содержит входной сигнал, задержанный вектором [2.3 3.5]. выход (:,:, 2) содержит входной сигнал, задержанный вектором [4.4 5.6].
Чтобы изменить задержку в систему координат от выборки к выборке, первая размерность вектора задержки (N-by-1-by-P или N-на-L-на-P) должен равняться формат кадра входа (N-на-L). Передайте вектор задержки размера 10 на 1 на 2.
clear delayVec; delayVec(:,1,1) = 3.1:0.1:4; delayVec(:,1,2) = 0.1:0.1:1; whos delayVec
Name Size Bytes Class Attributes delayVec 10x1x2 160 double
sim(model) display(output)
output(:,:,1) = 0 0 0 0 0 0 -0.8099 0.4029 0.8425 -0.2680 2.1111 -0.4376 0.4889 0.9911 0.0925 1.4020 0.6228 0.5435 -0.2050 1.0347 output(:,:,2) = -1.2149 0.6043 2.1580 -0.8317 1.4183 0.1398 0.2523 1.2650 0.3258 1.0596 0.3469 0.7072 -0.1807 0.9424 0.1986 0.5208 1.4816 -0.2437 1.4090 0.2939
Задержка изменяется для каждого элемента в канале. Один и тот же набор значений задержки применяется ко всем каналам. delayVec(:,1,1)
применяется к первому задержанному сигналу и delayVec(:,1,2)
применяется ко второму задержанному сигналу.