Ich beziehe mich auf Interlacing im Sinne älterer Interlaced-Videotechniken, bei denen die Pixelzeilen auf Ihrem Bildschirm in einem abwechselnden Muster von jeder zweiten oder dritten Zeile gerendert werden. ( https://en.wikipedia.org/wiki/Interlaced_video bietet ein gutes GIF des Vorgangs.)
Wenn Sie also Ihre Zeilen (1,2,3,4,.....99) haben
Sie würden in der Reihenfolge Zeilen (1,3,5,7......97,99,2,4,6,.....98) gerendert (Faktor 2).
oder (Faktor 3) als Zeilen (1,4,7.....2,5,8.....3,6,9....)
Ich versuche, ein Skript zu schreiben, das eine Sequenz beliebiger Länge nach diesem Muster mit JSL neu anordnet, aber ich kann nicht ganz herausfinden, wie man einen Index zum Neuordnen erstellt. Ich versuche derzeit, dies mit Matrizenmathematik zu erreichen, aber vielleicht wäre eine For-Schleife intelligenter/einfacher?
// 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 />
// ????
BEARBEITEN: Ich musste am Ende einen Index hinzufügen, um einen "Anfang" zu verhindern, wenn der Faktor die Anzahl der Zeilen nicht gleichmäßig teilt.
/////////////
Hallo,
Sehen Sie sich den Befehl Shape() an. Zusammen mit dem Transponieren können Sie das bekommen, wonach Sie suchen--
Names Default To Here(1);
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];
fact = 3;
shape(shape(a, ceiling(nrow(a)/fact))`, 1)`[1::nrow(a)]
Prost,
Brady
Dies scheint korrekte Matrizen zu erhalten (kann eine Transponierung erfordern, wenn die Startmatrix anders aufgebaut ist)
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);
in JMP14 gibt dies "Argument should be list" zurück. Ich glaube, in Bezug darauf, wo b in der Loc-Funktion aufgerufen wird. Ich habe versucht, b mit as list () zu ändern, aber ich verstehe das Ergebnis nicht.
separat, was macht |/ und hängt es mit dem Concat-Operator || zusammen?
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);