2014-01-07 171 views
0

我設置了兩個表格。在For循環中設置If循環

表1 = [0,1,2,3,4,5]

表2 = [554,543,554,544,564,553]

所有我試圖做的是以下內容:

(1)我想利用價值在表1中,讀出它,然後在表具有相同的索引識別它2.

因此,例如,表1 [0] = 0,因此我們會發現Table2 [Table1 [0]] = 554

(2)從表1的給定值開始,我想通過整個表2,並追加數據首先小於A = 541或大於B = 553的值,並將相應的值相應地存儲在不同的表中。

當我讀Table1時,我從Table1 [0] = 0開始,然後繼續將此0作爲Table2的索引,並繼續向前讀取Table2的全部內容,每當Table2中的值爲< A或> B

例如,從Table1 [1] = 1 - >然後繼續讀取Table2 [1]後面的所有值:Table2 [2] = 554,...在這種情況下,Table2 [1]之後的第一個值是554,這是> B,所以我將它追加到不同的表並繼續前進,下一個值Table2 [3] = 544,它不大於B或更小比A,所以我忽略並繼續等。

我的代碼如下但我不確定發生了什麼問題。我現在用的是伊戈爾環境,但代碼是非常可讀像C++:

Function Trial(Data1, Data2) 
//Waves are just the tables that contain the data. Data1 = Table1, Data2 = Table2 

Wave Data1 
Wave Data2 

Variable A = 541; 
Variable B = 553; 
Variable i, j, k 
Variable XScale, Invalid 
Variable numPoints = numpnts(Data1) //Number of Points in the array 
Variable numPoints2 = numpnts(Data2) 

for(i=0; i<numPoints; i+=1) 
    XScale = Data1[i] 
    Wave TrialCrossingA, TrialCrossingB 
    Make /N=(numPoints2)/O TrialCrossingA, TrialCrossingB 
    //Makes new tables to append required values 
    for(j=Xscale; j<numPoints2; j+=1) 
      If(Data2[j] <= Xa) 
       TrialCrossingA[i] = XScale 
      Elseif(Data2[j] >= Xb) 
       TrialCrossingB[i] = XScale 
      Endif 
    endfor 
endfor 

End 

回答

0

我覺得你在這裏犯了一個錯誤,

for(j=Xscale; j<numPoints2; j+=1) 
      If(Data2[j] <= Xa) // This is supposed to be Data2 I guess ? 
       TrialCrossingA[i] = XScale 
      Elseif(Data2[j] >= Xb) // This is supposed to be Data2 I guess ? 
       TrialCrossingB[i] = XScale 
      Endif 
    endfor 
+0

哦,是的,對不起,只是一個錯字。我改變了,但代碼仍然不起作用。 :( –

+0

我編輯了你提到的錯字 –

0

代碼在這裏不編譯。未定義變量XaXb