我设置了两张桌子。
表 1 = [0, 1, 2, 3, 4, 5]
表 2 = [554、543、554、544、564、553]
我想做的就是以下几点:
(1)我想把表1中的Value,读取出来,然后用表2中相同的索引来识别。
例如 Table1[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 所以我忽略并继续等等。
我的代码如下,但不确定出了什么问题。我使用的是 Igor 环境,但代码非常易读,就像 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