Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.08.2013, 04:35   #1
SantilaS
Пользователь
 
Регистрация: 17.08.2012
Сообщений: 15
По умолчанию Как построить спектр сигнала, график которого в TChart?

Ребята, помогите пожалуйста. Давно не программировал((( Сколько не читаю информации, не получается. Задача такая: есть график сигнала в TChart, нужно построить его спектр, можно через преобразование Фурье, можно через вейвлет анализ. Подскажите какие-нибудь алгоритмы для выполнения этой задачи или киньте исходный код примера решения похожей задачи на avfelichev@mail.ru Заранее благодарен откликнувшимся!
SantilaS вне форума Ответить с цитированием
Старый 15.08.2013, 07:36   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

http://pblog.ru/?p=658
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 15.08.2013, 10:02   #3
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Скажите только каких сигналов? Если как в плеере, то надо определять FFT-параметры канала. Функция Bass_ChannelGetData. Если же других, то в массивe Single, затем по цыклу, рисуете на канвасе PaintBox.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 16.08.2013, 10:10   #4
SantilaS
Пользователь
 
Регистрация: 17.08.2012
Сообщений: 15
По умолчанию Данные

В приложении пример данных, с которыми я работаю... саша40, если вы можете помочь, то напишите мне совет в письме на avfelichev@mail.ru Могу прислать исходник программы открывающей эти файлы...
Вложения
Тип файла: rar ДАННЫЕ.rar (384.1 Кб, 33 просмотров)
SantilaS вне форума Ответить с цитированием
Старый 16.08.2013, 13:30   #5
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...выкладывайте в теме исходник и структуру ваших DAT-файлов. А приложенный exe-ник выкиньте, никто его запускать не будет.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 17.08.2013, 09:08   #6
SantilaS
Пользователь
 
Регистрация: 17.08.2012
Сообщений: 15
По умолчанию Понял

Исправляюсь) Исходник...
Вложения
Тип файла: rar Исходник.rar (37.4 Кб, 43 просмотров)
SantilaS вне форума Ответить с цитированием
Старый 17.08.2013, 11:17   #7
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

У меня есть функция, которая работает через FFT-параметры. Вот код:
Код:
TFFTData = array [0..512] of Single;
procedure Draw(HWND : THandle; FFTData : TFFTData; X, Y : Integer);
FFTPeacks  : array [0..128] of Integer;
 FFTFallOff : array [0..128] of Integer;
implementation

//Timer
var
FFTFata: TFFTData;
begin
if BASS_ChannelIsActive(Stream)<>BASS_ACTIVE_PLAYING then exit;
Bass_ChannelGetData(stream,@FFTFata,BASS_DATA_FFT1024);
Draw(pb1.Canvas.Handle,FFTFata,0,-5);

//Draw
var i, YPos : LongInt; YVal : Single;
begin
//очистка области визуализации
          pb1.Canvas.Pen.Color := clWhite;
          pb1.Canvas.Brush.Color := clWhite;
          pb1.Canvas.Rectangle(0, 0, pb1.Width, pb1.Height);
       //визуализация
       // pb1.Canvas.Pen.Color := clRed;
         for i := 0 to 127 do begin // количество столбиков
           YVal := Abs(FFTData[i]);
           YPos := trunc((YVal) * 500);
           if YPos > pb1.Height then YPos := pb1.Height;

           if YPos >= FFTPeacks[i] then FFTPeacks[i] := YPos
             else FFTPeacks[i] := FFTPeacks[i] - 1;

           if YPos >= FFTFallOff[i] then FFTFallOff[i] := YPos
              else FFTFallOff[i] := FFTFallOff[i] - 3;
                     //рисование пика
                     pb1.Canvas.Pen.Color := clRed;
                     pb1.Canvas.MoveTo(X + i*(3+1) , Y + pb1.Height - FFTPeacks[i]);
                     pb1.Canvas.LineTo(X + i*(3+1) + 3, Y + pb1.Height - FFTPeacks[i]);
                     //рисование столбика
                     pb1.Canvas.Pen.Color := clBlue;
                     pb1.Canvas.Brush.Color := clBlue;
                     pb1.Canvas.Rectangle(X + i*(3+1) , Y + pb1.Height - FFTFallOff[i], X + i*(3+1) + 3, Y + pb1.Height);

              end;

//paintbox.paint
 pb1.Canvas.Pen.Color := clWhite;
          pb1.Canvas.Brush.Color := clWhite;
          pb1.Canvas.Rectangle(0, 0, pb1.Width, pb1.Height);
Преобразование Фурье используется в визуализации. Это звук. Но у вас же другое. Попробуем использовать другие данные.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 17.08.2013, 13:59   #8
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...БПФ неэффективен для анализа редкоповторяющейся случайной последовательности. Тут же прослеживается как раз периодичность. Впрочем, даже для негармонических периодических сигналов основная гармоника, как правило, максимальна. Мне непонятно другое - почему несмотря на приведенную мною статью, материал был проигнорирован, в то время как там разжевано буквально по полочкам.

По данным топикстартера видно, что чипы сигнала (укладывается по 6 периодов в чипе) в архивах имеют период 40 мс, что соответствует частоте канального сигнала 25 Гц (вероятно медицинская какая аппаратура, а может еще что). Тут важнее - с какой частотой оцифровывалось это все, ибо это нужно для правильной визуализации (восстановления частоты гармоник на графике). По моим прикидкам частота дискретизации записанных сигналов в архивах в районе около 2700 Гц, что подтверждается переделкой.

Вот полученные спектры для двух каналов из архивов (для облегчения работы конечного пользователя мною была разработана 'FFTR.DLL'):










Вот видео работы:


p.s.: 'Описание API вызова библиотеки FFTR.DLL' приложил к архиву. Кстати, ТС, что за прибор у вас все-таки?
Вложения
Тип файла: zip src2_fftr.dll.zip (403.8 Кб, 57 просмотров)
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 17.08.2013, 14:42   #9
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Говорил же сказать что за сигнал. Может автор имеет разные виды сигналов(звук, инфазвук, ультразвук, излучение)?
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 17.08.2013, 15:55   #10
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Саша, топик-стартер приложил сам сигнал в посту #4. Да и я уже визуально его показал и рассказал за его характеристики.

Цитата:
...разные виды сигналов(звук, инфазвук, ультразвук, излучение)
не разачаровуйте меня, вас иногда заносит в сторону. Первые три всего лишь по частотному диапазону условно разделены, а "излучение" - вообще довольно расплывчатая формулировка, ничего не говорящая о характере и сигнатуре самого сигнала.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Построить график функции, используя компонент TChart. vitalik007 Компоненты Delphi 3 09.06.2014 11:20
Спектр сигнала в Delphi Испанец91 Помощь студентам 14 05.06.2011 18:12
Спектр сигнала Zer0 Помощь студентам 6 01.05.2011 22:27
Спектр звукового сигнала вейвлетами Krendel' Мультимедиа в Delphi 1 23.12.2010 07:54
как построить спектр сигнала? nikolavna-88 Мультимедиа в Delphi 1 25.04.2010 20:01