Ich beziehe mich auf Interlacing wie bei älteren Interlaced-Videotechniken, bei denen die Pixelzeilen auf Ihrem Bildschirm in einem abwechselnden Muster jeder zweiten oder dritten Zeile gerendert werden. ( https://en.wikipedia.org/wiki/Interlaced_video hat ein gutes Gif des Prozesses)
Also, wenn Sie Ihre Zeilen haben (1,2,3,4,.....99)
sie würden (Faktor 2) in der Reihenfolge gerendert werden (1,3,5,7......97,99,2,4,6,.....98)
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 gemäß diesem Muster mit JSL neu anordnet, aber ich kann nicht ganz herausfinden, wie man einen Index erstellt, um dies neu anzuordnen. Ich versuche derzeit, Matrixmathematik auszuarbeiten, um dies zu erreichen, aber vielleicht wäre eine for-Schleife klüger/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);