我设置了两个表格。在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
哦,是的,对不起,只是一个错字。我改变了,但代码仍然不起作用。 :( –
我编辑了你提到的错字 –