gpt4 book ai didi

c++ - “Probability Based”产生怪异结果的到达算法的时间延迟?

转载 作者:行者123 更新时间:2023-12-02 10:10:23 26 4
gpt4 key购买 nike

我编写了以下算法,旨在通过“强力”方法解决到达时间延迟问题。问题如下:给定三个接收器在一个平面中的已知位置以及某个信号的传播速度,请仅知道每个接收器“看到”信号的时间来确定信号源的位置。
该算法的工作原理是假设源位于1000 x 1000公里的平方面积内,然后在每个可能的位置进行迭代(以1 km的“分辨率”),计算到达每个接收器的时间,并确定哪个位置与每个接收器之间的已知到达延迟(因此,对于每个位置[x,y],我计算到达接收器1、2和3的时间,然后确定到达1的时间有多近-到达2的时间是针对实时数据,并且类似地针对组合1-3和2-3(为简单起见,忽略其他可能的组合)。
这就是问题所在:每个信号事件都不太可能来自同一方向。但是,我的代码似乎建议每个事件都位于[0,0]。尽管从技术上讲可能是这种情况,但是我的代码有可能出现了问题,因此出于这个问题的目的,我们假设情况确实如此。也许我在这里犯了一些明显的错误?

#define c   299792
#define statn1x 3.00000
#define statn1y 3.60000
#define statn2x 2.10000
#define statn2y 2.10000
#define statn3x 0.96000
#define statn3y 3.60000

void findProb(double alpha, double gamma, double beta){

int x,y;
double thld = DBL_MAX;

for(int i = 0; i < 1000; ++i){
for(int j = 0; j < 1000; ++j){

double alphaEst = sqrt(pow(i-statn1x,2) + pow(j-statn1y,2)) / c;
double betaEst = sqrt(pow(i-statn1x,2) + pow(j-statn1y,2)) / c;
double gammaEst = sqrt(pow(i-statn1x,2) + pow(j-statn1y,2)) / c;
std::cout << i << "," << j << "\n";
if( std::max(std::max(fabs((alphaEst-betaEst) - alpha), fabs((alphaEst-gammaEst)-beta) ), fabs((betaEst-gammaEst)-gamma)) -
std::min(std::min(fabs((alphaEst-betaEst) - alpha), fabs((alphaEst-gammaEst)-beta) ), fabs((betaEst-gammaEst)-gamma)) < thld){

thld = std::max(std::max(fabs((alphaEst-betaEst) - alpha), fabs((alphaEst-gammaEst)-beta) ), fabs((betaEst-gammaEst)-gamma)) -
std::min(std::min(fabs((alphaEst-betaEst) - alpha), fabs((alphaEst-gammaEst)-beta) ), fabs((betaEst-gammaEst)-gamma));

x = i;
y = j;

}

}
}

//std::cout << x << "," << y << "\n";

}

void localize(){

ROOT::RDataFrame tdoa("D","./coincidences.root");

vector<double> alpha, beta, gamma;

tdoa.Foreach([&](double delay){ alpha.push_back(delay); },{"x"});
tdoa.Foreach([&](double delay){ beta.push_back(delay); },{"y"});
tdoa.Foreach([&](double delay){ gamma.push_back(delay); },{"z"});

int iter = std::min(std::min(alpha.size(), beta.size()), gamma.size());
for(int i = 0; i < iter; ++i){

findProb(alpha[i], beta[i], gamma[i]);

}

}
请注意此项目中使用的术语: alpha表示到达站1-ttoa 2的时间(ttoa)。 gamma指向ttoa站1-ttoa站3 beta指向ttoa站2-ttoa站3 alphaEst指从某个位置[x,y]到站点1的计算出的估计行进时间 betaEst指从某些[x,y]到站点2的计算的估计行进时间
...,对于 gammaEst同样如此。
请注意,我现在还在努力制作一个较小的,可复制的示例(如果可能)。我会尽快添加。

最佳答案

alphaEst,betaEst和gammaEst被分配了相同的值。

betaEst = sqrt(pow(i-statn1x,2) + pow(j-statn1y,2)) / c
大概应该是
betaEst = sqrt(pow(i-statn2x,2) + pow(j-statn2y,2)) / c

关于c++ - “Probability Based”产生怪异结果的到达算法的时间延迟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63854135/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com