0

我设置了两张桌子。

表 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
4

2 回答 2

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
于 2014-01-07T22:05:36.523 回答
0

代码在这里不编译。变量XaXb未定义。

于 2015-05-03T12:47:13.720 回答