Проблема и то, что я ожидаю.
У меня есть таблица h
, в которой указаны состояния H-связи, где 1
для существующей H-связи, 0
для отсутствия H-связи . Столбцы для разных объектов, строки для разных временных шагов.
0, 0, 1, 1, 0, 0
0, 0, 1, 1, 0, 0
1, 0, 1, 1, 0, 0
1, 1, 1, 1, 0, 1
0, 1, 0, 0, 1, 1
0, 1, 0, 0, 1, 1
1, 0, 1, 1, 0, 1
Я хочу рассчитать жизнь (как долго существует H-связь) для каждого объекта. Таблица ожидаемой продолжительности жизни L
должна быть такой.
0, 0, 4, 4, 0, 0
0, 0, 4, 4, 0, 0
2, 0, 4, 4, 0, 0
2, 3, 4, 4, 0, 4
0, 3, 0, 0, 2, 4
0, 3, 0, 0, 2, 4
1, 0, 1, 1, 0, 4
Я не знаю, как применить эту карту.
Что я сделал.
Я попытался сопоставить h
с новой таблицей generations
с указанием поколений H-связи с использованием обнаружения нарастающего фронта. И таблица поколений G
получила:
[[0 0 1 1 0 0]
[0 0 1 1 0 0]
[1 0 1 1 0 0]
[1 1 1 1 0 1]
[1 1 1 1 1 1]
[1 1 1 1 1 1]
[2 1 2 2 1 1]]
И затем я попытался отобразить h
в новую таблицу ages
, указав возраст Н-связи. Я получил следующую таблицу A
.
[[0 0 1 1 0 0]
[0 0 2 2 0 0]
[1 0 3 3 0 0]
[2 1 4 4 0 1]
[0 2 0 0 1 2]
[0 3 0 0 2 3]
[1 0 1 1 0 4]]
Меня пытались сопоставить h
с таблицей выживаемости L
с помощью logi c: Срок службы водородной связи - максимум возраст всех возрастов с одним и тем же поколением. Однако я застрял на этом сопоставлении.
Некоторый код
Некоторые коды, которые я использовал для вычисления G
и A
.
def getQbGenerations(self, QbStates):
QbGenerations = np.zeros_like(QbStates, dtype=np.int64)
Generation = np.zeros(QbStates.shape[-1])
Generation[QbStates[0] == 1] = 1
QbGenerations[0] = Generation
for i in range(1, QbStates.shape[0]):
# Rising Edge
RiseMask = np.logical_and(QbStates[i-1]==0, QbStates[i]==1)
Generation[RiseMask] += 1
QbGenerations[i] = Generation
return QbGenerations
def getQbAges(self, QbStates):
QbAges = np.zeros_like(QbStates, dtype=np.int64)
Age = np.zeros(QbStates.shape[-1])
Age[QbStates[0] == 1] = 1
QbAges[0] = Age
for i in range(1, QbStates.shape[0]):
BondMask = QbStates[i] == 1
Age[BondMask] += 1
Age[~BondMask] = 0
QbAges[i] = Age
return QbAges