2014-11-04 66 views
1

我很困惑我的繪圖腳本的行爲。我想繪製多個文件。在最後一個文件中,我想要不同的邊框設置。所以我想出了一個if語句。腳本看起來像:如果插入語句,則跳過循環步驟

labeltitles = "0.01 0.02 0.05 0.1 0.15 0.1885 0.2 0.25" 
outnames = "0p01 0p02 0p05 0p1 0p15 0p1885 0p2 0p25" 
do for [i=1:2] { 
    set border 4 + 1         ## top (4) + bottom (1) 
    if (i = words(labeltitles)) {set border 8 + 4 + 1} ## right (8) + top (4) + bottom (1)} 
    set xlabel 'z = '.word(labeltitles,i) 
    set out word(outnames,i).'.eps' 
    plot 'data.dat' u (column(i+1)):1 w l lt 1 lw 7 lc rgb '#444444' 
} 

當我運行這個腳本,只有最後一個劇情得到輸出。如果我評論if語句,所有地塊都會輸出。我也嘗試添加else語句,但沒有任何更改。

回答

1

一個相當古典的編程錯誤:您在if條件內有一個賦值,而不是比較(==)。它必須是

if (i == words(labeltitles)) {set border 8 + 4 + 1} 
+0

你說得對。但是,爲什麼最後的循環以正確的方式執行,其餘的則不是? – 2014-11-04 21:36:08

+0

我不知道你的意思。改變分配的比較應該可以正常工作(除此之外,你必須遍歷所有的單詞,而不僅僅是1和2:'爲[i = 1:words(labeltitles)]做...'。 – Christoph 2014-11-04 21:40:27

+0

是的,它真的可以正常工作。在我的原始文件中,最後提到的是,我只是試圖爲論壇製作一個更簡單的版本,非常感謝。 – 2014-11-04 22:13:07