Форум программистов, компьютерный форум, киберфорум
Цифровая обработка сигналов
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
0 / 0 / 0
Регистрация: 23.04.2015
Сообщений: 10
1

Новая идея (возможно) в цифровой обработке сигнала

23.04.2015, 06:51. Показов 1784. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброе время суток, меня зовут Стас.
Ниже описан, несколько необычный алгоритм обработки сигналов, может я изобрел очередной велосипед , но я не нашел ничего подобного, поэтому экспериментировал. В радиолокации нам необходимо во входном сигнале найти пик который не является местником (отражением от местного статичного предмета, например гора) и выше шумов. Суть в том, что если нам нужен пик, то и сигнал стоит рассматривать как массив пиков (всплесков). Выкладываю данный алгоритм, может кому пригодится или появятся идеи по его дальнейшему развитию. Данный подход анализа сигнала разумно применять совместно с математическими методами обработки. Использовать можно не только в радиолокации, но в обработке изображений, например.
Входные данные приходят с АЦП, это непрерывный поток массивов, длинна каждого массива от 0 скажем до 1024.

Я пишу в среде CodeGear™ Delphi® 2007.
Delphi
1
2
3
4
Const
   SCAN_COUNT     =  1024;
Type
   TScanBuf = array[0..SCAN_COUNT_ - 1]  of  word;
У меня сигнал выглядит примерно так :
Новая идея (возможно) в цифровой обработке сигнала


Моя задача заключалась в том, чтобы найти во всем этом бардаке нужный мне всплеск или пик, по определенным критериям. По этому, родилась такая идея, что если весь сигнал разбить на отдельные составляющие «пики», и потом уже их анализировать. «Пики» на картинке ниже пронумерованы (чтобы было более понятно, что я хотел получить).
Новая идея (возможно) в цифровой обработке сигнала


Структура, в которой будут хранится данные «пики», выглядит так :

Delphi
1
2
3
4
5
6
7
TSigPart = record
     StartPos, EndPos, maxPos : word; // позиции в TScanBuf начала, конца и максимального значения
     StartVal, EndVal, MaxValue : Word; // начальное, конечное и максимальное значения
     MinusValue : Word; // Далее пригодится для обработки
  end;
 
TSigParts = array of TSigPart;
Ниже приведен алгоритм, который разбивает входной массив на необходимые нам куски - «пики». Логика алгоритма простая, если предыдущее значение меньше текущего (т.е. мы идем вверх) присваиваем максимальное значение и его позицию в переменные, если предыдущее значение больше текущего (пошли вниз, заканчиваем «пик») запоминаем мин значение и его позицию. После того как опять пошли вверх, добавляем новый эл. массива и присваиваем максимальное значение и его позицию в переменные, и так далее.

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
var
    i, n : Integer;
    CP : Integer; // это кол. получившихся частей
    StartPos : word; // с какой позиции будет начинаться поиск и разбиение.
    niz, Ch : boolean;
    ci : TScanBuf; //входные данные
    SigParts : TSigParts // выходные данные
 begin
    StartPos := 5; // мне не нужно было начинать с 0, потому как в начале всегда лажа
 
    // ищем реальное начало, когда данные в массиве начинают изменяться
   // 55555555 или 000000 пропускаем
    i := StartPos;
    while (i < SCAN_COUNT_) and (ci[StartPos-1] = ci[i]) do
      inc(i);
 
    StartPos := i; 
    SetLength(SigParts, 1);
    CP := 0;
    n := 0;
 
    SigParts [n].StartPos := StartPos;
    SigParts [n].EndPos := 0;
    SigParts [n].StartVal := ci[StartPos-1];
    SigParts [n].EndVal := ci[StartPos-1];
    SigParts [n].MaxValue := ci[StartPos-1];
    niz := false;  // эта переменная говорит о том что данные начали уменьшаться, т.е пик найден      
                           //ищем его завершение.
    Ch := False;
    i := StartPos;
    while I < SCAN_COUNT do begin
      if ci[i-1] <= ci[i] then begin // текущий больше предыдущего или равен, идем вверх
        if niz then begin // если до этого было движение вниз, значит начался новый пик
          //если  после того как спуск закончен идут ровная линия, мы пропускаем до начала следующего пика
          while (ci[i-1] = ci[i]) and (i < (SCAN_COUNT-1)) do // пропускаем
            inc(i);
          // доб. новый эл. массива
          inc(n);
          SetLength(DT, n+1);
          SigParts [n].StartVal := ci[i-1];
          SigParts [n].StartPos := i-1;
          niz := false;
        end;
 
        if ci[i-1] > ci[i] then begin // если после окончания пика идет ровная линия и спуск
          SigParts [n].MaxValue := ci[i-1];
          SigParts [n].maxPos := i-1;
          SigParts [n].EndVal := ci[i];
          SigParts [n].EndPos := i;
          niz := True;
        end else begin
          SigParts [n].MaxValue := ci[i];
          SigParts [n].maxPos := i;
        end;
      end else begin
        SigParts [n].EndVal := ci[i];
        SigParts [n].EndPos := i;
        niz := True;
      end;
      inc(i);
    end;
 
    if SigParts [n].MaxValue = 0 then begin // последний кусок может быть не закончен, удаляем его
      Dec(n);
      SetLength(SigParts, n+1);
    end;
    CP := n;
 end;
За один проход = StartPos - SCAN_COUNT, мы формируем массив «пиков».
Далее с этими данными можно делать много чего, тут у кого, на что фантазии хватит.
Приведу несколько примеров.

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


В алгоритме c каждым пиком делается то, что изображено на рисунке. Правиться исходный массив.
Название: Отсечение.jpg
Просмотров: 73

Размер: 7.0 Кб

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
var
  i, j, n, t : integer;
  Si    : TScanBuf; // входной массив
  Si2  : TScanBuf; // выходной массив
  SigParts : TSigParts;
begin
  n := GetPicArray(SigParts, Si); // Это функция которая разбивает входной сигнал на куски «пики».
  // в n присвоено кол эл. массива SigParts
  FillChar(SI2,  sizeof(TScanBuf), 0); // зануляем выходной массив
  for I := 0 to n - 1 do begin
    if SigParts[i].StartVal > SigParts[i].EndVal then // выбираем что больше, значения начала пика или конца и  
                                                                                       //присваиваем в SigParts[i].MinusValue
      SigParts[i].MinusValue := SigParts[i].StartVal 
    else
      SigParts[i].MinusValue := SigParts[i].EndVal;
    for j := SigParts[i].StartPos to SigParts[i].EndPos do begin // идем по исходному массиву
      t := si[j] - SigParts[i].MinusValue; // вычитаем из исходного массива SigParts[i].MinusValue
      if t < 0 then // Если после вычитания значение получилось меньше 0 присваиваем 0
        si2[j] := 0
      else
        si2[j] := t;
    end;
  end;
Используя такой подход к обработке сигнала, я реализовал алгоритм определения порога отсечения шумов.
Данный алгоритм неплохо себя показал. Его разумно применять после вычитания карты местников, разбив сигнал, полученный после вычитания, на пики.
Для начала нам нужен максимум, выше которого порог подыматься не будет, пусть это будет = «TM». Найти его можно разделив сумму максимальных значений пиков на количество пиков и умножить результат на 1,8-2.
Далее нам нужно еще одно значение = «dm». Для того чтобы порог лежал не на кончиках пиков шумов, а выше (был более сглаженным) нам необходимо к значению порога добавлять некоторую дельту. Чтобы хорошо компенсировать секторные помехи дельта должна рассчитываться динамически. Я предлагаю для расчета брать кусок дальней дистанции (конец массива, 200-300 отсчетов). Так как там у нас уже недолжно быть ничего кроме шумов или полезного сигнала(с небольшой энергетикой). Далее мы сумму максимумов пиков этого отрезка делим на их количество и умножаем на 1,5-1,8.
Находимо среднее из трех соседних пиков = «с». Для этого складываем максимальные значения пиков: i(ого), i(ого)-1, i(ого)+1 и делим сумму на 3.
t1, t2 значения порога для данного
После этого заполняем массив порога от начала i(ого) до конца i(ого)+1 пика.

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
var
  i, j, n : integer;
  TM  :  integer;  // максимальное значение порога
  dm, dk : integer;
  Si    : TScanBuf; // входной массив
  SiThreshold  : TScanBuf; // выходной массив
  SigParts : TSigParts;
 
Begin
  FillChar(SiThreshold, sizeof(TScanBuf), 0); // зануляем все значения массива
  n := GetPicArray(SigParts,  Si);  //рабиваем
  dm := 0;
  dk := 0;
  TM := 0;
 
  for i  := n div 2 to n-2 do begin // берем сразу со среднего эл. Чтоб долго не перебирать ненужное
    if SigParts[i].maxPos >= 850 then begin // почему 850, по тому что мне так захотелось 
      dm := dm + Abs(SigParts [i].MaxValue - SigParts [i+1].MaxValue); // сумма разности начала и конца пиков
      Inc(dk); // кол. сложенных пиков
    end;
    TM := TM + SigParts [i].MaxValue; // сумма максимумов
  end;
 
  if (TM<> 0) and (n > 3) then // если у нас больше 3 кусков получилось,  тогда считаем
    TM := Round(TM/(n div 2 -1)*1.5)// сумму делим на количество и добавляем коэффициент 
  else
    TM := 40; // выбрано опытным путем
 
  if dk < 5 then
    dm := 10
  else
    dm := Round((dm/dk)*1.9);
 
  d1 := dm;  // для начала чему-нибудь присваиваем например «коэффициенту добавления к порогу»
// Далее в d1 будет лежать предыдущее «среднее максимумов 3-х соседствующих пиков»
  TM;
  for I := 1 to n-2 do begin
    d2 := SigParts[i-1].MaxValue;
    d2 := d2 + SigParts[i].MaxValue;
    d2 := (d2 + SigParts[i+1].MaxValue) / 3; // среднее значение максимумов 3-х соседствующих пиков 
    b := SigParts[i].EndPos - SigParts[i-1].StartPos; // кол. отсчетов от начала предыдущего пика до конца этого
    for j := SigParts[i-1].StartPos to SigParts[i].EndPos do begin
      s1 := round(d1+(d2-d1)/b*(j - SigParts[i-1].StartPos))+dm;  //значение d2+dm  должно быть в последнем 
//отчете нашей выборки, в этой формуле мы просто делаем плавное изменение значения от 
// SigParts[i-1].StartPos (d1+dm) до SigParts[i].EndPos (d2+dm)
      if s1 < TM then // проверяем, чтоб расчетный порог небыл больше максимально возможного
        SiThreshold[j] := s1
      else
        SiThreshold[j] := TM;
    end;
    d1 := d2;
  end;
 
  if n > 1 then begin // заполняем хвост буфера порога значениями, чтоб там нулей небыло.
    for j := SigParts[n-2].StartPos to SCAN_COUNT - 1 do begin
      if s1 < s then
         SiThreshold[j] := s1
      else
        SiThreshold[j] := TM;
    end;
  end;
end.
А отсечь все, что ниже порога можно вот таким способом. Здесь входной сигнал разбивается и потом проверяется если максимум пика выше порога, то мы этот пик целиком копируем в выходной массив.
Так мы сохраняем края пика, при простом вычитании мы теряем несколько отсчетов.

Delphi
1
2
3
4
5
6
7
8
    n := GetPicArray(SigParts, SiInput );
    FillChar(SiOutput, sizeof(TScanBuf), 0);
    for I := 0 to n do begin
      for j := SigParts[i].StartPos to SigParts[i].EndPos do
        if (SiThreshold[j] < SigParts[i].MaxValue) then begin
           SiOutput [j] := SiInput;
        end;
    end;
Ниже приведен алгоритм поиска в массиве пиков. Это может пригодится для сравнения двух массивов, анализа. Суть алгоритма простая, так как мы предполагаем, что «пик» в массиве(1) находится где-то недалеко от «пика» в массиве(2). Я делаю так, пример: номер пика в массиве(1) скажем 50, далее осуществляется поиск пика на (возьмём для примера шаг 10) 10 позиций назад (от 50 до 40), потом на десять позиций вперед (от 50 до 60), далее если «пик» не найден, ищем дальше от 40 до 30 и от 60 до 70. Ну и так далее до конца и начала массива.
Ищем в нужный пик так : если позиция максимального значения текущего пика находится между началом и окончанием пика в SigParts1, значит нужный пик в массиве (1) найден.

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
Var
  Kn : integer; // кол. эл. в массиве SigParts1
  SigParts1 : TSigParts; 
  SigParts2: TSigParts;
 
  function FindPic(InputIndex : integer) : integer;
  const
     step = 10;
  var
     k : integer; // кол. эл. SigParts1 с которыми мы уже сравнили 
     j, i : integer; // эл. SigParts1 который мы сравниваем в данный момент
     tl, tr : integer; // границы поиска
  begin
    k := 0;
    tl := InputIndex - step;
    tr := InputIndex + step-1;
    if InputIndex >= kn then // если текущий индекс "пика" больше чем кол. "пиков" в сигнале1
      j  := kn -1
    else
      j := InputIndex;
    i := InputIndex+1;
    Result := -1;
    while k < kn do begin
      while (j >= Tl) and (j >= 0) do begin // двигаемся к 0
        if (SigParts1 [j].StartPos <= SigParts2 [InputIndex].maxPos) and
           (SigParts1 [j].EndPos >= SigParts 2[InputIndex].maxPos) then begin
          Result := j;
          Exit;
        end;
        dec(j);
        inc(k);
      end;
      while (i <= Tr) and (i < kn) do begin // двигаемся к kn (кол. эл. в массиве SigParts2)
        if (SigParts1 [i].StartPos <= SigParts2 [InputIndex].maxPos) and
           (SigParts1 [i].EndPos >= SigParts 2[InputIndex].maxPos) then begin
          Result := i;
          Exit;
        end;
        inc(i);
        inc(k);
      end;
      Tl := Tl - step;
      Tr := Tr + step;    end;
  end;
В коде возможно есть ошибки. Если что пишите.
Если у кого есть мысли по применению данного идеи, пишите.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.04.2015, 06:51
Ответы с готовыми решениями:

Проект по Цифровой обработке изображений C#
Доброго времени суток. Попробую объяснить зачем, собственно, я создал эту тему. Сейчас учусь на...

Закомментировать код по цифровой обработке изображений
Нужна помощь, нужно закомментировать данный код по цифровой обработке изображений. using System;...

Новая идея - google disk вместо сервера
Как вы относитесь к новой (или старой) идее размещать свой сайт на google disk? Плюсы: нет...

У Алевтины возникла новая идея для занимательной статистики
У Алевтины возникла новая идея для занимательной статистики. Поэтому она просит Вас написать...

17
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
23.04.2015, 16:40 2
Вы знаете, все это конечно хорошо и замечательно, но из того, что вы привели абсолютно неясен физический смысл вашего алгоритма (ну то есть я кое-что да понял, хотя может и ошибся). Более того, не показано его если хотите "влияние" на собственно решение задачи радиолокации.
Ну и чисто имхо, для фильтрации пассивной помехи это оверкилл.
0
10231 / 6609 / 498
Регистрация: 28.12.2010
Сообщений: 21,156
Записей в блоге: 1
23.04.2015, 19:17 3
Поиск экстремумов (пиков) скользящим окном не ново и уже давно используется, в том же DTMF декодере на базе анализа спектра помимо Герцеля, также используется при реализации фильтрации скользящей медианы и т.п. А для отделения помехи от сигнала используется корреляция и накопление, при желании есть куча других видов фильтрации.

Кликните здесь для просмотра всего текста



По СУЛТ и ранговым обнаружителям цели на фоне помех можно посмотреть тут https://www.cyberforum.ru/post2547213.html (cyberforum.ru/post2547213.html)
0
0 / 0 / 0
Регистрация: 23.04.2015
Сообщений: 10
24.04.2015, 06:26  [ТС] 4
Для raxp
Поиск экстремумов (пиков) скользящим окном не ново
Я так понимаю речь о последнем коде. Понятно что их вагон и маленькая тележка. Ну алгоритм поиска здесь выложен только по тому что мной он уже написан и если кому понадобиться, чтоб не писали то что давно написано. Я тут на эксклюзивность не претендую
Просто у самого периодически встает дилемма: или искать алгоритм или самому придумать.

Насчет фильтрации, сразу нужно сказать, что сигнал на разном железе будет разный и еще есть сложение, так как сигнал у нас сложный. Вообщем качество входного у нас не очень, например у местников от оборота к обороту амплитуда скачет процентов на 15 а то и больше и форма тоже нестабильна.
Это я говорю что Вы понимали что я имею на входе.
Теперь про накопление и корреляцию. Да говорил нам один очень умный дядька что это круто , особенно корреляция чуть ли не супер обнаружитель.
Накопление нам сначала очень понравилось потом мы добавили корреляционный обнаружитель. Ну во первых чуда не произошло там где мы цели теряли корреляция их чудесным образом не обнаружила, а ресурсоемкость у этого метода выше. Ну и месники естественно тоже надо было убирать, а после суммирования помехи местами складывались и коррелировались с эталоном, уровень был невысоким но был и опять же порог корреляции для обнаружения оптимальней делать плавающим. А в условиях не синхронных помех (от другой станции например) корреляция не очень хорошо себя ведет, а после накопления и подавно. Вообщем проанализировали мы немало реальной первички и поняли, что корреляция работает, но не лучше чем стандартный метод а ресурсов жерет больше. Накопления нам тоже мало что дает как оказалось, мы не нашли не одного места где бы у нас цель была на уровне шумов, если она есть то энергетика у нее достаточная для ее выделения, а вот неприятные моменты после накопления связанные с помехами и целями в местниках, были. Овчинка выделки не стоит. Ну это в нашем случае.

А реализованный мной алгоритм расчета порога отсечения шумов неплохо работает и в помехах тоже.
Я позже выложу пару картинок.

Я хотел знать такой подход, как разбиение сигнала на "пики" где то применяется.
Да вообще информация для размышления. По опыту знаю иногда глядя на один подход можно придумать что то очень неплохое используя тот же принцип комбинируя его с другими. Я так придумал неплохой алгоритм по .... ну наверное можно назвать это распределением, а идея была взята из генетических алгоритмов. Ну это так ностальгия.

Добавлено через 14 минут

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

Ну и чисто имхо, для фильтрации пассивной помехи это оверкилл.
Если Вы про 3-ю картинку то это активная помеха принимаемая при выключенном передатчике.
Просто знакомые для удаления постоянной составляющей применяют мат. метод, результат так себе и ресурсов жерет больше.

А вообще смотрите шире я же не буду здесь выкладывать весь код первичной и вторичной обработке. И уж тем более третички.
Развивайте фантазию. Может куда то и примените и не обязательно в радиолокации.
0
10231 / 6609 / 498
Регистрация: 28.12.2010
Сообщений: 21,156
Записей в блоге: 1
24.04.2015, 06:48 5
...для определения постоянной составляющей используется накопление сумм положительных и отрицательных частей квадратур, после уже их деление на количество превышений относительно нуля в ту и другую сторону и последующее вычитание. Что до поиска среди максимумов пиков для нормализации тоже не ново. Корреляция хорошо работает в сочетании с ЧПК в условиях несинхронки, это должно быть вам известно.

Но, а вообще ваши потуги похвальны, но чреваты. В той области, где вы работаете вы должны были подписывать NDA о неразглашении.
1
0 / 0 / 0
Регистрация: 23.04.2015
Сообщений: 10
24.04.2015, 08:45  [ТС] 6
Но, а вообще ваши потуги похвальны, но чреваты. В той области, где вы работаете вы должны были подписывать NDA о неразглашении.
Я же не все выкладываю, одна идейка, маленькая часть кода, немного измененная . Да и ее там могло не быть если бы у меня свободного времени не было. Инициатива так сказать.

Добавлено через 1 минуту
И Вы же не знаете где это применяют, на каком конкретно изделии.

Добавлено через 9 минут
Что до поиска среди максимумов пиков для нормализации тоже не ново.
Значит все таки очередной велосипед. Эх жизнь моя жестянка.

Добавлено через 1 час 42 минуты
raxp,
для определения постоянной составляющей используется накопление сумм положительных и отрицательных частей квадратур, после уже их деление на количество превышений относительно нуля в ту и другую сторону и последующее вычитание
Что то такое они и применяют, в подробности не вдавался, но результат весма посредственный, возможно у них где то ошибки. Ну мне туда лесть себе дороже.
0
0 / 0 / 0
Регистрация: 23.04.2015
Сообщений: 10
24.04.2015, 11:21  [ТС] 7
Ну картинки как и обещал.

Предыстория. Я с начала хотел сделать обработку только с помощью пиков, то есть пытася всякими разными аналитическими методами выделить цель, даже пытался методом сравнения двух массивов пиков, старого и нового, избавится от местников с вычитанием и без. Но с тем сигналом что есть ничего хорошего из этого не получилось.
Делал я это в свободное время, просто было интересно.

Потом встала необходимость реализовать динамический порог отсечения, и был предложен математический метод, весьма неплохой. Но я взял Excel вбил туда последовательность какая в голову взбрела, с не самым простой вариант первички, я придумал.
Отобразил ее в графике а вторая линия была рассчитана по этому мат. методу, результат мне не очень понравился. Далее я добавил туда линии рассчитанные по вершинам (моим методом) причем вариантов было несколько 9,7 и т.д и 3. И вариант с 3-мя был ближе к тому, что я бы начертил рукой.
ЭКСПЕРИМЕНТИРУЙТЕ.

Новая идея (возможно) в цифровой обработке сигнала

Новая идея (возможно) в цифровой обработке сигнала

Это была некислая активная помеха. И цели в этих условиях хреново но видно.
И ДА кое что пролазит.

Новая идея (возможно) в цифровой обработке сигнала

Это просто хреновая помеховая обстановка.

Цель не покажу. Нельзя.
0
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
24.04.2015, 11:59 8
Вы знаете, я честно в упор не понимаю физику того, что вы пытаетесь сделать. Есть 100500 разных методов селекции движущихся целей, описанных в тьме источников. Может быть уважаемый raxp в силу своей гораздо большей образованности в данных вопросах меня поправит, но мне кажется было бы более верно сначала физику вашей идеи проработать, а затем реализовывать. И еще немаловажный момент, меня еще больше запутал тот факт что сначала вы вели речь о пассивной помехе, а теперь скакнули на активную. Это как бы разные по сложности проблемы.
0
0 / 0 / 0
Регистрация: 23.04.2015
Сообщений: 10
24.04.2015, 12:42  [ТС] 9
HighPredator, Мне все понятно.
А Вам могу объяснить.
Что понимается под "физикой идеи".
Что непонятно?

Добавлено через 1 минуту
И кстати об СДЦ здесь речи не шло.
0
0 / 0 / 0
Регистрация: 23.04.2015
Сообщений: 10
24.04.2015, 13:06  [ТС] 10
Новая идея (возможно) в цифровой обработке сигнала

Вот сюда я дорисовал цель, синим цветом.
Красным отображен порог отсечения. Все что ниже его это хлам, все что выше полезный сигнал.
Причем можно считать, что сигнал (зеленый) уже без местников.
А какая там помеха, активная или пассивная или еще какая не наши сексуальные проблемы.
0
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
24.04.2015, 13:31 11
Цитата Сообщение от Filosov Посмотреть сообщение
Что понимается под "физикой идеи".
Постараюсь попроще раскрыть мысль. Вот у вас есть сигнал с мусором. Вам нужно отфильтровать то, что не нужно. Будем пока так говорить. Какое преобразование над имеющейся волновой функцией (или над спектром сигнала) вы делаете, что с вашей точки зрения должно решить следующие задачи:
1) выделить полезную информацию в сигнале
2) сделать п.1 в таком виде, чтобы получить точное решение задачи радиолокации для источников полезной информации из п.1
Как-то так. Я собственно это все к чему. Это изначально физическая задача (а не какая нибудь абстрактная фигня из теории графов например). Следовательно, она имеет и должна иметь аналитическое решение. Алгоритм и программный код это всего лишь частная реализация такого решения.
Сорри если слегка сумбурно. Достаточно долго не витаю в этой области.

Добавлено через 2 минуты
Цитата Сообщение от Filosov Посмотреть сообщение
И кстати об СДЦ здесь речи не шло.
Это неявно подразумевается если вы решаете задачу выделения движущихся целей на фоне других источников. А вы именно это и делаете иначе смысла нет ничего фильтровать имхо.
0
0 / 0 / 0
Регистрация: 23.04.2015
Сообщений: 10
24.04.2015, 13:53  [ТС] 12
Вообще схема работы я бы сказал классическая.
Получили луч.
1) убираем местники, какое нибудь СДЦ.
2) рассчитываем порог отсечения, все что выше оставляем. Параллельно можем применить еще методы по удалению чего нибудь ненужного.
3) все что осталось пытаемся связать с предварительными отметками или начинаем формировать новую предварительную отмету.
4) предварительные отметки пытаемся привязать к существующим целям если если нет то это предварительные цели, через 3 оборота станет ясно.
Ну так чтоб общий смысл было понятно.
0
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
24.04.2015, 14:02 13
Общий смысл ясен. Неясно что именно нового вы пытаетесь привнести в решение этой задачи и на чем оно основано. Потому что я пока это не особо понял.
0
0 / 0 / 0
Регистрация: 23.04.2015
Сообщений: 10
24.04.2015, 14:21  [ТС] 14
Нового конкретно для радиолокации возможно и ничего. Если говорить о моем варианте порога то точно ничего нового.

Просто такой подход когда разбивают сигнал на части так как это делал я. Я не нашел, может плохо искал.
Обычно сигнал (луч) складывают с предыдущим, вычитают применяют различные мат. методы.
Но я не нашел чтоб его разбивали на "пики" и с этими данными можно поколдовать. Есть у меня идеи будет время поковыряю.

Я думаю с этих данных можно получить полезную инфу.
0
6045 / 2160 / 753
Регистрация: 10.12.2010
Сообщений: 6,005
Записей в блоге: 3
24.04.2015, 14:47 15
А теперь я вас понял. То, что вы называете разбиением сигнала на части в принципе уже существует. Обычно на уровне самой антенны, на пример на базе фазированной антенной решетки. То есть общая полоса принимаемых частот распределена по каналам, а итоговый входной сигнал формируется на выходе входного каскада тем или иным способом. Почитайте про ФАР вообще, полезно будет.

Если неточно выразился, заранее сорри.
0
0 / 0 / 0
Регистрация: 23.04.2015
Сообщений: 10
24.04.2015, 15:20  [ТС] 16
HighPredator, Ну у нас не ФАР. К сожалению.
И вообще давай на ТЫ.

Добавлено через 18 минут
А про ФАР почитаю, спасибо.
0
10231 / 6609 / 498
Регистрация: 28.12.2010
Сообщений: 21,156
Записей в блоге: 1
24.04.2015, 19:38 17
Просто такой подход когда разбивают сигнал на части так как это делал я. Я не нашел, может плохо искал.
могу разачаровать, подобный метод рангового обнаружителя использовался нами в 1997-м и уже несколько устарел . А не нашли, ибо защищен патентами с грифом.

Лучше не про ФАР почитайте, а про СУЛТы.
1
0 / 0 / 0
Регистрация: 23.04.2015
Сообщений: 10
24.04.2015, 19:47  [ТС] 18
raxp,
Ну видимо я его разгрифил нечаянно. Может кому пригодится.
В 97 я еще учился.
СУЛТ - Стабилизация уровня ложных тревог, что то знакомое может быть уже, надо почитать.
СПАСИБО.
0
24.04.2015, 19:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.04.2015, 19:47
Помогаю со студенческими работами здесь

Программа для сигнала WAV по цифровой стеганографии
Необходима программа для формата WAV по цифровой стеганографии. Метод скрытия данных с...

Посткажите пожалустно приобразование аналогового сигнала в цифровой
собирал по этой схеме , библиотеку использовал...

Расчет формы модулирующего сигнала в цифровой системе связи
Дана некоторая последовательность цифр. Например, 011001.нужно для каждой единицы нарисовать...

Новая идея для новичков и не только: кому то узнать,а кому то вспомнить
Друзья! Есть хорошая идея по изучению Java, начиная с самых основ, что может быть интересно как...

Как подавить боковые лепестки при обработке ФКМ сигнала с кодом Баркера?
Не подскажите способы подавления боковых лепестков в коде Баркера. Гуглом воспользовался, но все...

Новая материнка выдает 4 сигнала (ошибка системного таймера)
Купил материнку asrock b85m pro3 на замену старой, сдохшей gigabyte. НО НЕ ТУТ ТО БЫЛО! Рано...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru