Настройка цикла If в цикле For
У меня есть две таблицы.
Таблица 1 = [0, 1, 2, 3, 4, 5]
Таблица 2 = [554, 543, 554, 544, 564, 553]
Все, что я пытаюсь сделать, это следующее:
(1) Я хочу взять Значение в Таблице 1, прочитать его, а затем идентифицировать его с тем же индексом в Таблице 2.
Так, например, Table1[0] = 0, и, следовательно, мы обнаружили бы, что Table2 [Table1 [0]] = 554
(2) Из заданного значения таблицы 1 я хотел бы просмотреть всю таблицу 2 и добавить значение, в котором данные сначала либо меньше, чем A = 541, либо больше, чем B = 553, и сохранить соответствующее значение соответственно в другой таблице.
Когда я читаю Таблицу 1, я начинаю с Таблицы 1 [0] = 0, затем я перехожу к этому 0 в качестве индекса для Таблицы 2 и продолжаю читать всю Таблицу 2, останавливаясь и добавляя всякий раз, когда значения в Таблице 2 равны B.
Например, начиная с Таблицы 1[1] = 1 -> я затем продолжу считывать все значения, следующие за Таблицей 2[1]: Таблица 2[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
2 ответа
Код не компилируется здесь. Переменные Xa
а также Xb
не определены.
Я думаю, что вы ошиблись здесь,
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