Russian Qt Forum

Qt => Дополнительные компоненты => Тема начата: kvrus от Январь 07, 2011, 14:15



Название: QwtPlotSpectrogram в Qwt в библиотеке.
Отправлено: kvrus от Январь 07, 2011, 14:15
Здравствуйте.
Пытаюсь разработать утилитку отображения спектра сигнала во времени (ось x - частота, ось у - время, ось Z уровень сигнала).
Разбираюсь с примером spectrogram приложенным к библиотеке кувт. Но в этом примере спектрограмма не меняется во времени , она как бы создана в QwtRasterData по формуле z = 1.0 / (v1(x,y) * v1(x,y) + v2(x,y) * v2(x,y)); в переопределении виртуального метода value.
Не могу сообразить как мне отобразить спектрограмму из имеющегося массива данных (двумерный массив строки - ось х столбцы - ось у и значения соответствуют значениям z).
Может кто то сталкивался с такой задачей?


Название: Re: QwtPlotSpectrogram в Qwt в библиотеке.
Отправлено: SLiDER от Январь 19, 2011, 13:37
Данный контрол абсолютно не приспособлен для Вашего случая. Единственный вариант это переопределять функцию (метод value у QwtRasterData) возвращающую значение точки запрашиваемой компонентом и рассчитывать её интерполируя для этого Ваши данные. Но тормозить всё это будет чудовищно, так как сколько точек (физических пикселей) будет в Вашей спектрограмме столько раз и будет вызван метод value, т.е. при картинке 800х600, для однократной перерисовки, это будет 480000 вызовов метода.


Название: Re: QwtPlotSpectrogram в Qwt в библиотеке.
Отправлено: Ubuntu_linux от Январь 24, 2011, 03:53
А просто по таймеру реплот ?


Название: Re: QwtPlotSpectrogram в Qwt в библиотеке.
Отправлено: gorec323 от Май 16, 2013, 15:29
А просто по таймеру реплот ?

При вызове replot() у меня не получилось обновить спектрограмму. А вот после изменения массива данных пришлось вызывать следующие функции:
Код:
QwtPlotSpectrogram *d_Spectrogram;

.....

d_Spectrogram->invalidateCache();
d_Spectrogram->itemChanged();