rename
This commit is contained in:
44
Sources/ECGSynKit/RRSeries.swift
Normal file
44
Sources/ECGSynKit/RRSeries.swift
Normal file
@@ -0,0 +1,44 @@
|
||||
import Foundation
|
||||
import RealModule
|
||||
|
||||
public struct RRSeries<T: BinaryFloatingPoint> {
|
||||
public let timeParameters: TimeParameters
|
||||
public let rrParamaters: RRParameters
|
||||
let rng: RandomNumberGenerator
|
||||
|
||||
struct Segment {
|
||||
let end: T
|
||||
let value: T
|
||||
}
|
||||
let segments: [Segment]
|
||||
let count: Int
|
||||
|
||||
public init(timeParameters: TimeParameters, rrParamaters: RRParameters, rng: RandomNumberGenerator, signal: [T]) {
|
||||
self.timeParameters = timeParameters
|
||||
self.rrParamaters = rrParamaters
|
||||
self.rng = rng
|
||||
|
||||
let sr = T(timeParameters.srInternal)
|
||||
|
||||
var rrn = [Segment]()
|
||||
// generate piecewise RR time series
|
||||
do {
|
||||
var tecg = T.zero
|
||||
var i = 0
|
||||
while i < signal.count {
|
||||
tecg += signal[i]
|
||||
rrn.append(Segment(end: tecg, value: signal[i]))
|
||||
i = Int((tecg * sr).rounded(.toNearestOrEven)) + 1
|
||||
}
|
||||
}
|
||||
|
||||
segments = rrn
|
||||
count = signal.count
|
||||
}
|
||||
|
||||
public func valueAt(_ t: T) -> T {
|
||||
let index = min(segments.partitioningIndex { t < $0.end }, segments.endIndex - 1)
|
||||
return segments[index].value
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user