高效率的行狀態編碼您好,我正在嘗試找出在 JSL 中更改行狀態的最快方法。 我通常會嘗試避免選擇行,因為它比 get rows where() 慢,但我不知道如何使用矩陣或行列表來更改行狀態。 是否需要選擇行來更改狀態?
輕微相關的問題:調色板是否可以編寫腳本? 我看到“colorbox()”顯示框,但腳本索引表示它只能由平台存取。 我不一定需要它,因為我能夠找到一些解決方法。 我的意思的示例如下所示。
謝謝,
麥克風
//Clear Log();
Names Default To Here( 1 );
dt = open( "$SAMPLE_DATA\Big Class.jmp");
//get rows where; not sure what to do with this
myRows = dt << get rows where(:height == 63);
// use select where works but could be slower
dt << select where(:height == 63);
dt << exclude(1);
dt << colors("Red");調色板,來自使用者偏好的範例:

回覆:高效率的行狀態編碼是的,我經常忘記這一點,並且在查看 JMP 的線上幫助時會不時得到提醒。我可能只是使用“select where()”,然後獲取“rows where()”,以方便處理排除的行并快速(編碼方面,而不是執行方面)抓取高於/低於規範限制的行我想我可以得到一個包含1 和0 的excepted() 單獨的列矩陣,然後相乘。 只要它正確處理缺失值,它可能會正常工作並運行得很快。
回覆:高效率的行狀態編碼我也在半導體行業工作,發現在許多大型應用程式中,將參數資料移入矩陣並使用各種矩陣函數而不是處理資料表函數是一種更快的方法。
回覆:高效率的行狀態編碼謝謝吉姆。 在 vba 和 jsl 中多年的緩慢腳本結果之後,選擇「獲取」而不是「選擇」的習慣有點根深蒂固,但我想我主要考慮的是我不僅需要迭代行而且還需要迭代每一列的情況。
以下是有關半導體測試資料的幾個場景,其中每一行都是在生產中測試的設備,每一列(索引列之後)都是設備上的參數測試。 每列都有儲存為屬性的規格限制。一個腳本循環並逐列確定產量、高側和低側影響等(很多其他內容,但這是不相關的)。通常,對於半導體數據,測試時會在第一次失敗時停止,因此失敗右側的列可能會遺失。 如果資料測試是在失敗時繼續進行,那麼轉換為「失敗時停止」可能會更好。 所以我還有一個腳本可以轉換為「第一次失敗時停止」資料。在這兩種情況下,改用 get rows where() 與 select where() 顯著縮短了腳本執行時間。 如果表不可見,則使用 select where() 可能會更快;我還沒有檢查過這個。
但對於行狀態來說,它只是循環一次,所以現在我退一步思考一下,它可能還不錯。
這是我的失敗腳本的兩個腳本版本的螢幕截圖。 這項變更在執行時間上產生了巨大的差異。
另一個主題可能是為什麼我將它解析為字串。 我必須回去再看一遍,但幾年前我發現解析為字串要快得多,但這可能是在我仍然有 select where() 語句的時候。

回覆:高效率的行狀態編碼我沒有您的調色板問題的答案,但我確實運行了快速的“選擇位置”與“獲取行位置”,發現差別不大
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA\semiconductor capability.jmp" );
start = HP Time();
For( i = 1, i <= N Rows( dt ), i++,
dt << select where( :NPN1 > :npn1[i] )
);
Show( "select where", Format( (HP Time() - start) / 100, "Hr:m:s" ) );
start = HP Time();
For( i = 1, i <= N Rows( dt ), i++,
dt << select where( :NPN1 > :npn1[i] )
);
Show( "get rows", Format( (HP Time() - start) / 100, "Hr:m:s" ) );
我得到了結果:
「選擇地點」;=「2:51:55」;
「獲取行」; =“2:50:40”;