我指的是在較舊的隔行視頻技術中的隔行掃描,其中屏幕上的像素線將以每兩行或每三行的交替模式呈現。 ( https://en.wikipedia.org/wiki/Interlaced_video有一個很好的過程動圖)
所以如果你有你的行(1,2,3,4,.....99)
它們將按行(1,3,5,7......97,99,2,4,6,.....98)的順序呈現(因子 2)
或(因子 3)作為行(1,4,7.....2,5,8.....3,6,9....)
我正在嘗試編寫一個腳本,該腳本將根據此模式使用 JSL 重新排序任意長度的序列,但我無法弄清楚如何構建索引來重新排序。 我目前正在嘗試計算矩陣數學來實現這一點,但也許 for 循環會更智能/更容易?
// 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 />
// ????
編輯:我不得不在末尾添加一個索引,以防止當因子沒有平均劃分行數時“重新開始”。
/////////////
你好,
查看 Shape() 命令。 隨著移調,你可以得到你想要的——
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)]
乾杯,
布雷迪
這似乎得到了正確的矩陣(如果起始矩陣的構建方式不同,則可能需要轉置)
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);
在 JMP14 中,這將返回“參數應該是列表”,我相信指的是在 Loc 函數中調用 b 的位置。 我試圖用 as list() 修改 b 但我不明白結果。
單獨來說,|/ 做了什麼,它與 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);