![]() |
|
![]() ![]() ![]() |
|
monstrl |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 13.10.2011 Репутация: нет Всего: нет |
Здравствуйте. Проблема с обработкой временного ряда точнее двумерного массива в 3000 элементов рядом фурье и еще парой преобразований. Суть в том что есть вложенность циклов до 5 уровней, конечное число будет комплексным каждого ряда, при нахождении коря от суммы мнимого и реального число становиться inf. Отдельно до нахождения корня бывает до 10e+200. Если же, например, до нахождения корня поставить qDebug() << "gdfgdfgdf"; то числа становяться и реальное и мнимое и корень не менее +-(10e-8) то есть то что мне нужно.
Вопрос: каким образом он может влиять и почему появляются большие числа? ставил qDebug() до цикла тоже все норм, проверял программу на двух разных компах, разницы нет. |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
Очень может быть выход за границы массива. Случаем программа не многопоточная?
|
|||
|
||||
monstrl |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 13.10.2011 Репутация: нет Всего: нет |
применил все параметры оптимизации не помогло, в релизе если запустить то значения одни считаются правильно, но при возведении в квадрат inf. В отладке это значение более 10e+195, квадрат этого числа inf. Думаю проблема в среде, может есть какие нибудь способы оптимизации в qt? Алгоритм программы правильный, проверенный, а вот массив чисел очень большой более 2000, числа double.
|
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 24 Всего: 196 |
Я тебе говорю, что что-то повреждает твои переменные. Пройди отладчиком в тех местах, где сбоит.
|
|||
|
||||
monstrl |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 13.10.2011 Репутация: нет Всего: нет |
прошел отладчиком все нормально, qDebug() если поставить на вывод параметров сразу после счета, то все числа нормальные, если убрать его то убегают в бесконечность, думаю что проблема возможна в среде?
|
|||
|
||||
math64 |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Выложи код - возможных причин может быть много.
|
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
monstrl, максимальное значение уровня спектра мощности после fft
где MAX_INPUT_DATA - максимально возможное значение входных данных. заметь, это макс. значение уже спектра мощности, т.е. уже квадрата re*re+im*im таким образом, чтобы получить твои 10e+195 при fftLength равном 3000, макс. размах входных данных д.б. ~1,2e378 Если в твоих входных данных такие значения - то всё так и должно быть. А скорее всего, у тебя либо пропись по памяти ( как bsa и говорил ), либо какие-то переменные (либо элементы массива) просто неинициализированны и там мусор, который может меняться, если вставить в код qDebug() Это сообщение отредактировал(а) borisbn - 10.2.2012, 09:11 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
monstrl |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 13.10.2011 Репутация: нет Всего: нет |
Проблему решил, всем спасибо.
В не инициализированные переменные дейсвительно записывался мусор, обнулил на всякий случай. В алгоритме который мне дали, действительно был выход за пределы массива, на небольших числах он игнорился и все срабатывало в других программах, код переписал, теперь проблем нет. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |