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