C++ 具有时滞的简单输入输出
假设我有一个输入信号,可以是一个随机双精度:C++ 具有时滞的简单输入输出,c++,C++,假设我有一个输入信号,可以是一个随机双精度: while(true){ double t; // = current time, let's assume I know that double input = rand(); } 我想生成一个输出信号,它只应用0.5秒的时间延迟(信号处理术语中的死区时间为0.5秒) 我正在考虑将输入存储在一个向量中,同时在另一个向量中存储一个时间戳,然后查找output=input(0.5秒前)。然而,这似乎效率很低 对于这类问题,什么是合适的数据结构
while(true){
double t; // = current time, let's assume I know that
double input = rand();
}
我想生成一个输出信号,它只应用0.5秒的时间延迟(信号处理术语中的死区时间为0.5秒)
我正在考虑将输入存储在一个向量中,同时在另一个向量中存储一个时间戳,然后查找output=input(0.5秒前)。然而,这似乎效率很低
对于这类问题,什么是合适的数据结构?(一个缓冲区,让我回忆起0.5秒前存储的值,并丢弃过去比所选时间延迟更远的记录值)立即想到的是
让生产者将输入推送到
std::queue
,每0.5秒(使用std::thread
)让消费者从中弹出。用于存储数据的结构应该有一个时间戳(到期或排队的时刻)和双精度值
存储结构的数据结构应该是优先级队列(按时间戳排序)
使用者线程应休眠n毫秒,其中n初始化为500毫秒
当消费者弹出第一个项目时,它可以检查第二个项目并计算n(下一次迭代的睡眠时间)。否则它可以再睡500毫秒
让我知道我是否应该为它编写代码。输入发生的频率和速度如何?在输入连续发生时,while中的每个周期(true)表示歉意,如果我没有准确描述问题,输入和输出连续发生,while中的每个周期都会出现。我只想让输出延迟0.5秒抱歉,如果我没有准确描述问题,输入和输出会连续出现,在while look中的每个周期。我只希望输出延迟0.5秒。
while(true){
double input = rand();
// in pseudocode double output(t) = input(t-0.5)
}