Me refiero al entrelazado como en las técnicas de vídeo entrelazadas más antiguas, donde las líneas de píxeles de la pantalla se representaban en un patrón alterno de cada segunda o cada tercera fila. ( https://en.wikipedia.org/wiki/Interlaced_video tiene un buen gif del proceso)
entonces si tienes tus filas (1,2,3,4,.....99)
se representarían (factor 2) en el orden de las filas (1,3,5,7......97,99,2,4,6,.....98)
o (factor 3) como filas (1,4,7.....2,5,8.....3,6,9....)
Estoy intentando escribir un script que reordenará una secuencia de longitud arbitraria de acuerdo con este patrón con JSL, pero no puedo entender cómo crear un índice para reordenar esto. Actualmente estoy tratando de resolver matemáticas matriciales para lograr esto, pero ¿tal vez un bucle for sería más inteligente/fácil?
// Create arbitrary sequence
a = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,21,22,23,24,25,26,27,28];
f = 3 // interlacing factor<BR />
//Start trying to work out an index or grouping for a future sorting op
b = mod(a+f-1),3);
//b = [0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2, 2, 0, 1, 2, 0, 1, 2, 0]<BR />
// ????
Esto parece estar obteniendo matrices correctas (podría requerir la transposición si la matriz inicial se construye de manera diferente)
Names Default To Here(1);
// Create arbitrary sequence
a = 1::30;
f = 3;
b = Mod(a+f-1,f);
m_interlaced = [];
For(i = 0, i <= f-1, i++,
m_interlaced = m_interlaced |/ a[Loc(b, i)];
);
show(m_interlaced);
Names Default To Here(1);
// Create arbitrary sequence
a = 1::99;
f = 2;
b = Mod(a+f-1,f);
m_interlaced = [];
For(i = 0, i <= f-1, i++,
m_interlaced = m_interlaced |/ a[Loc(b, i)];
);
show(m_interlaced);
en JMP14 esto devuelve "El argumento debería ser una lista" Creo que se refiere a dónde se llama b en la función Loc. Intenté modificar b con list () pero no entiendo el resultado.
por separado, ¿qué hace | / y está relacionado con el operador concat ||?
a = 1::30;
f = 3;
b = as list(Mod(a+f-1,f));
m_interlaced = [];
For(i = 0, i <= f-1, i++,
m_interlaced = m_interlaced |/ a[Loc(b, i)];
);
show(m_interlaced);
/*:
m_interlaced = [](0, 1);