MayaFlux 0.5.0
Digital-First Multimedia Processing Framework
Loading...
Searching...
No Matches

◆ unique_cells_in_window()

template<typename LatticeT , typename CellT >
size_t MayaFlux::Kinesis::SymbolicTrajectory< LatticeT, CellT >::unique_cells_in_window ( size_t  window) const
inline

Count of distinct cells visited within the most recent window observations.

Parameters
windowNumber of recent observations to examine, clamped to the trajectory's retained history capacity
Returns
Number of unique cells, 1 if the window never left one cell, up to window if every observation was a new cell

Distinguishes a trajectory pacing back and forth between two cells (high crossings_in_window, low unique_cells_in_window) from one sweeping steadily through new territory (both high).

Definition at line 143 of file SymbolicTrajectory.hpp.

144 {
145 window = std::min(window, m_history.capacity());
146 if (window == 0)
147 return 0;
148
149 const auto view = m_history.linearized_view();
150 std::vector<CellT> seen;
151 seen.reserve(window);
152 for (size_t i = 0; i < window; ++i) {
153 bool found = false;
154 for (const auto& s : seen) {
155 if (s == view[i]) {
156 found = true;
157 break;
158 }
159 }
160 if (!found)
161 seen.push_back(view[i]);
162 }
163 return seen.size();
164 }
Memory::HistoryBuffer< CellT > m_history
std::span< T > linearized_view()
Get mutable linearized view of entire history.
size_t capacity() const
Get buffer capacity.

References MayaFlux::Memory::HistoryBuffer< T >::capacity(), MayaFlux::Memory::HistoryBuffer< T >::linearized_view(), and MayaFlux::Kinesis::SymbolicTrajectory< LatticeT, CellT >::m_history.

+ Here is the call graph for this function: