| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > тип complex |
| Автор: errtu 20.12.2005, 20:49 |
| Привет. Не подскажете как мне создать двумерный массив комплексных чисел типа Complex? |
| Автор: cardinal 20.12.2005, 21:05 |
| http://forum.vingrad.ru/index.php?showtopic=74234&view=findpost&p=588275 |
| Автор: errtu 20.12.2005, 21:16 | ||
понимаете в коде используется объявление типа complex **c .тока чёт не фурычит. Я имею в виду встроенный тип в С++,а не самодельный... |
| Автор: cardinal 20.12.2005, 22:47 |
| В С++ нет встроенного типа complex! То, что описывается в <complex> это вообще-то класс, а не двумерный массив! |
| Автор: blackofe 21.12.2005, 00:00 |
| вопрос, что называть "встроенным". в stl входит <complex>. содержит шаблоны и определения для работы с комплексными числами. пользуйтесь на здровье! |
| Автор: cardinal 21.12.2005, 02:14 |
| Он то имеет в виду что-то наподобии: int, double, char... То есть .h прописывать не надо и тип данных реализуется компилятором. complex не реализован в стандартных С/C++ компиляторах, а другие (если в них реализован), я бы не использовал, т.к. это лишний гемморой. Лучше ИМХО сделать complex самому если речь идет о С (или взять готовый класс из того же STL если речь идет о С++) и закрыть на этом вопрос. |
| Автор: Errtu 22.12.2005, 21:46 |
| А каким макаром перевести на С++ вот это : Powerof2(nx,&m,&twopm) ? Вообще-то эта строчка есть в преобразовании Фурье (по ссылке с этого сайта) Смысл? Причём m и twomp не определены (просто созданы) , значит рандомные какие-то.Вообще, вроде как проверяется на равенство степени двойки,а всё-таки может кто встречал? |
| Автор: cardinal 22.12.2005, 22:59 | ||||||||
А что это? Если это на Си написано, то переводить не надо... Так что в чем вопрос?
Где ссылка?
Предполагаю, что в них будет результат.
|
| Автор: errtu 23.12.2005, 09:49 |
| ссылка http://astronomy.swin.edu.au/~pbourke/other/fft2d/ Фишка в том, что здесь рассматривается двумерное преобразование Фурье.Но код кривоватый Как бы его отредактировать?Чтоб работало все как задумано? Можете посмотреть? [b][/b] |
| Автор: cardinal 23.12.2005, 14:08 |
| Код может и кривой, но я думаю, что он РАБОЧИЙ! То есть тебе просто надо переделать то, что написано в Си (в первую очередь заменить класс complex на структуру complex) и сделать то, чего не хватает. А Powerof2 это просто функция, которая проверяет является ли ny (если не ошибаюсь) 2^х = ny. Если ты скажешь ny = 32 например, то можешь эти строки вообще закомментировать. |
| Автор: Errtu 24.12.2005, 00:27 |
| Блин.Я не пойму как это работает??Чё за параметр m? Как интересно там делается обратное преобразоавание?Я не нашел обработки dir==-1, которое отвечает за обратное.у меня к тому же коэфф по сравнению с математикой получаются в раза меньше -( |
| Автор: errtu 24.12.2005, 15:05 |
| Или как вам вот это: /* Do the bit reversal */ i2 = nn >> 1; j = 0; for (i=0;i<nn-1;i++) { if (i < j) { tx = x[i]; ty = y[i]; x[i] = x[j]; y[i] = y[j]; x[j] = tx; y[j] = ty; } k = i2; while (k <= j) { j -= k; k >>= 1; } j += k; Интересгно в каком случае тело цикла будет выполняться? Каким образом у нас i<j станет? ...Удивляюсь |
| Автор: cardinal 24.12.2005, 15:42 | ||||||||||
Например:
Например:
Пора бы почитать про Фурье трансформацию от начала до конца... А во-вторых не бери в голову как работает FFT, а разберись с DFT и возьми FFT как есть! FFT в несколько раз быстрее DFT и больше ничего. Т.е. бери и пользуйся и не ломай голову над алгоритмом, над которым поломали голову до тебя, если тебе это не нужно, а просто нужен результат. |
| Автор: Errtu 24.12.2005, 16:13 | ||||||||||||
Ага.Я читал. Дело в том, что есть много разных исходников и гни асеп дают разный результат. [/b] Чтобы ориентироваться я проверял с результатом в пакете Mathematica. Там проводится дпф, почему они отличаются, если исходник верен ? Вот и незнаю. Могу ли для своих картинок использовать обычное пф или нужно обязательно двумерное.? |