我設置了兩個表格。在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
哦,是的,對不起,只是一個錯字。我改變了,但代碼仍然不起作用。 :( –
我編輯了你提到的錯字 –