2014-01-07 172 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