Поиск:

Ответ в темуСоздание новой темы Создание опроса
> qt inf nan появляются большие числа, в циклах при рассчетах появляются больши 
V
    Опции темы
monstrl
Дата 9.2.2012, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 13.10.2011

Репутация: нет
Всего: нет



Здравствуйте. Проблема с обработкой временного ряда точнее двумерного массива в 3000 элементов рядом фурье и еще парой преобразований. Суть в том что есть вложенность циклов до 5 уровней, конечное число будет комплексным каждого ряда, при нахождении коря от суммы мнимого и реального число становиться inf. Отдельно до нахождения корня бывает до 10e+200. Если же, например, до нахождения корня поставить qDebug() << "gdfgdfgdf"; то числа становяться и реальное и мнимое и корень не менее +-(10e-8) то есть то что мне нужно.
Вопрос: каким образом он может влиять и почему появляются большие числа? ставил qDebug() до цикла тоже все норм, проверял программу на двух разных компах, разницы нет.
PM MAIL   Вверх
bsa
Дата 9.2.2012, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 24
Всего: 196



Очень может быть выход за границы массива. Случаем программа не многопоточная?
PM   Вверх
monstrl
Дата 9.2.2012, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 13.10.2011

Репутация: нет
Всего: нет



применил все параметры оптимизации не помогло, в релизе если запустить то значения одни считаются правильно, но при возведении в квадрат inf. В отладке это значение более 10e+195, квадрат этого числа inf. Думаю проблема в среде, может есть какие нибудь способы оптимизации в qt? Алгоритм программы правильный, проверенный, а вот массив чисел очень большой более 2000, числа double.
PM MAIL   Вверх
bsa
Дата 9.2.2012, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 24
Всего: 196



Я тебе говорю, что что-то повреждает твои переменные. Пройди отладчиком в тех местах, где сбоит.
PM   Вверх
monstrl
Дата 10.2.2012, 08:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 13.10.2011

Репутация: нет
Всего: нет



прошел  отладчиком все нормально, qDebug() если поставить на вывод параметров сразу после счета, то все числа нормальные, если убрать его то убегают в бесконечность, думаю что проблема возможна в среде?
PM MAIL   Вверх
math64
Дата 10.2.2012, 09:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 23
Всего: 72



Выложи код - возможных причин может быть много.
PM   Вверх
borisbn
Дата 10.2.2012, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 48
Всего: 135



monstrl, максимальное значение уровня спектра мощности после fft
Цитата
fftLength ^ 2 * MAX_INPUT_DATA ^ 2;

где MAX_INPUT_DATA - максимально возможное значение входных данных.
заметь, это макс. значение уже спектра мощности, т.е. уже квадрата re*re+im*im
таким образом, чтобы получить твои 10e+195 при fftLength равном 3000, макс. размах входных данных д.б. ~1,2e378
Если в твоих входных данных такие значения - то всё так и должно быть.
А скорее всего, у тебя либо пропись по памяти ( как bsa и говорил ), либо какие-то переменные (либо элементы массива) просто неинициализированны и там мусор, который может меняться, если вставить в код qDebug() 

Это сообщение отредактировал(а) borisbn - 10.2.2012, 09:11


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
monstrl
Дата 10.2.2012, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 13.10.2011

Репутация: нет
Всего: нет



Проблему решил, всем спасибо.
В не инициализированные переменные дейсвительно записывался мусор, обнулил на всякий случай.
В алгоритме который мне дали, действительно был выход за пределы массива, на небольших числах он игнорился и все срабатывало в других программах, 
код переписал, теперь проблем нет.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0660 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.