Задержка входного сигнала с помощью блока Переменная дробная задержка. Каждое значение задержки является уникальным и может варьироваться от выборки к выборке в системе координат и может варьироваться в разных каналах. Можно вычислить несколько задержанных версий одного и того же входного сигнала одновременно, передав задержку входа с соответствующей размерностью.
Считайте, что вход является случайным сигналом с одним каналом и форматом кадра 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) применяется ко второму задержанному сигналу.