Предположим, что у нас есть простой сигнал с одним ударом по центру и ничем в остальных точках. Что-то вроде гауссовского распределения. например, см. This . Хорошо, тогда мы разделили эту форму на некоторую точку данных.
Я хочу преобразовать эту форму в трапециевидную форму в c++
. Что-то вроде это .
Насколько я знаю, это просто своего рода математическое усреднение. Ну как я могу это сделать?
Кроме того, я использую ROOT CERN
, чтобы показать результаты ...
Это основная часть моего кода, но он работает неправильно ...
char Data[Data_Point][5]
for (int k = 0; k < Data_Point ; k++){ // Data_Point is equal to 512, and so my array has just 512 member.
h1 = 0.0;
h2 = 0.0;
H = 0.0;
H1 = 0.0;
H2 = 0.0;
for (int l = 0; l <= L; l++){ // L is a const int and equal to 80.
if (k + 1 < Data_Point){
h1 += ((stoi(Data[k + l])) - Baseline / 20.0); // Baseline is average of 20 data point of first of 512 data point, by this i'm trying to make more accuarcy by subtracting the baseline.
} else {
H1 = h1;
cout << H1;
}
if (L + G + k + l < Data_Point){ // G is a Const int and equal to 15.
h2 += ((stoi(Data[L + G + k + l])) - Baseline / 20.0);
} else {
H2 = h2;
cout << H2;
}
}
H = ((h2 - h1) / L);
}
RisingTime->Fill(H);
Когда я запускаю этот код, я сталкиваюсь с ошибкой, которая говорит: Unhandled exception at 0x7731C54F in Pro1.exe: Microsoft C++ exception: std::invalid_argument at memory location 0x0019E854.
Кто-нибудь может помочь?
Любой ответ будет оценен.