Преобразование сигнала в трапециевидную форму (трапециевидный фильтр)

Предположим, что у нас есть простой сигнал только с 1 выпуклостью вокруг центра и ничего в остальных точках. Что-то вроде распределения Гаусса. например См. Этот. Хорошо, затем мы разделили эту фигуру на некоторую точку данных.

Я хочу преобразовать эту форму в трапециевидную в 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.

Кто-нибудь может помочь? Любой ответ будет оценен.

Пожалуйста, отредактируйте вопрос и определите «трапециевидную форму», это неясно. Что вы ожидаете на выходе?

kebs 08.04.2019 14:13

@kebs --- На самом деле это фильтр, который преобразует сигнал в форму трапеции, так называемый «трапециевидный фильтр». Я пытаюсь преобразовать его !!!

Elia 08.04.2019 14:20

@kebs --- Вопрос в том, как я могу преобразовать его в это: Что-то вроде этого [link] (https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTVKd6‌​f9bFcwaSMAbQcGna1mRG‌​C0PTtt7mcOZp2EfwViwh‌​ILtJt)

Elia 09.04.2019 06:56

Во-первых, вам нужно уменьшить масштаб того, над чем вы работаете. Ваш код выдает исключение, которое вы, похоже, не ожидаете или не обрабатываете должным образом. Сначала исправьте эту часть. Для этого извлеките минимальный воспроизводимый пример (используя согласованное форматирование!) или узнайте, как использовать отладчик для пошагового выполнения кода. Как новый пользователь здесь, также возьмите тур и прочитайте Как спросить.

Ulrich Eckhardt 09.04.2019 07:03
Редактировать свой вопрос вместо предоставления этой информации в комментариях.
kebs 09.04.2019 11:22

Вы используете стои с чем-то, что является не строкой, а указателем на char! Очень плохая идея... И, пожалуйста, сделайте правильный отступ в коде.

kebs 09.04.2019 11:23

^^^ Связано: stackoverflow.com/questions/31928686/… Обратите внимание, что stoi не является atoi.

Bob__ 11.04.2019 16:46
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
7
226
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я нашел это:

// Trapezoidal filter

for (int k = 0; k < Data_Point; k++){

    h1 = 0.0;
    h2 = 0.0;
    H = 0.0;
    H1 = 0.0;
    H2 = 0.0;

    for (int m = 0; m <= (L - 1); m++){

    if (k + m < Data_Point){
      h1 += ((stoi(Data[k + m])));
    }   //  if (k + m < Data_Point)
    else{
      H1 = h1;
      cout << H1;
    }   //  else

    if (L + G + k + m < Data_Point){
      h2 += ((stoi(Data[L + G + k + m])));
    }   //  if (L + G + k + m < Data_Point)
    else{
      H2 = h2;
      cout << H2;
    }   //  else

  } //  for (int m = 0; m <= (L - 1); m++)

  H = ((h2 - h1) / L);
}

Другие вопросы по теме