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

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

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.06.2012, 21:53   #1
MypkAnn
 
Регистрация: 17.11.2011
Сообщений: 5
Печаль Преобразование Фурье на C#

Есть входные данные - либо синус, косинус, либо картинки.
Нужно сделать прямое и обратное преобразования Фурье (БПФ или ДПФ) и что бы после этих процедур было возможно вывести на экран результат ( тот же синус или картинку).
Вот прямое преобразование Фурье:
Код:
        const int N = 50;
        double[] InnerArray = new double[N];
         DSP.PF.Complexs[] Furie = new DSP.PF.Complexs[N];
         DSP.PF.Complexs[] OuterArray = new DSP.PF.Complexs[N];
        
        public class Complexs //Класс комплексных чисел
        {
            public double Re;//Реальная часть
            public double Im;//Мнимая
         }

            Complexs[] c=new Complexs[N];
            Complexs[] c0=new Complexs[N / 2];
            Complexs[] c2 = new Complexs[N / 2];
            Complexs[] Res = new Complexs[N];
            Complexs c1 = new Complexs();

            int n = (int)c.Length;
            if (n == 1) return;
            for (int i = 0, j = 0; i < n; i += 2, ++j)
            {
                if (j<n)
                c0[j] = c[i];
                c2[j] = c[i + 1];
            }

            double Arg = 2 * Math.PI / n * (invert ? -1 : 1);
            for (int i = 0; i < n / 2; ++i)
            {
                Inner[i] = (Math.Cos(2 * Math.PI * i / N) / 2) * 400 + 230;

                c[i].Re += Inner[i] * Math.Cos(Arg);
                c[i].Im -= Inner[i] * Math.Sin(Arg);
          
                Res[i].Re = c0[i].Re * c2[i].Re - c0[i].Im * c2[i].Im;
                Res[i].Im = c0[i].Re * c2[i].Im + c0[i].Im * c2[i].Re;
Как реализовать обратное преобразование Фурье что бы можно было вывести результаты, т.е. как избавиться от комплексных чисел?
MypkAnn вне форума Ответить с цитированием
Старый 14.06.2012, 22:59   #2
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

Я бы задал такой вопрос математикам, а не программистам. Нормальный программист скорее заюзает готовый код, а лучше - библиотеку.
ds.Dante вне форума Ответить с цитированием
Старый 15.06.2012, 00:06   #3
MypkAnn
 
Регистрация: 17.11.2011
Сообщений: 5
По умолчанию

так в том то и дело, что кода нет и нужно его написать...
MypkAnn вне форума Ответить с цитированием
Старый 29.01.2015, 18:32   #4
Альтернатива
Новичок
Джуниор
 
Регистрация: 28.04.2014
Сообщений: 1
По умолчанию обратное преобразование Фурье

Код:
public void FourierTransformnoise()//обратное дискретное преобразование Фурье
        {
            Complex ImOne = new Complex(0, 1);
            Complex complex;
            Complex sum;
            Complex sk;
            for (int n = 0; n < N; n++)
            {
                sum = new Complex(0, 0);
                for (int k = 0; k < K; k++)
                {
                    sk = new Complex(listNoise[k].Y, 0);
                    complex = new Complex(-2 * Math.PI * k * n / K, 0);
                    complex = Complex.Multiply(ImOne, complex);
                    complex = Complex.Exp(complex);
                    complex = Complex.Multiply(sk, complex);
                    sum = Complex.Add(sum, complex);
                }
                listSSHF.Add(n, Complex.Abs(sum));
            }
        }
P.S. если не актуально,то может пригодится кому)
Альтернатива вне форума Ответить с цитированием
Старый 04.02.2015, 22:46   #5
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Есть чудесная библа AlgLib... если нужен именно метод то проще ее взять и не парить моцк.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Быстрое преобразование Фурье HarleyDav Помощь студентам 0 09.01.2012 08:37
Дискретное преобразование фурье Petrow Помощь студентам 5 17.11.2011 23:27
Двумерное преобразование Фурье marina_sergina Помощь студентам 0 08.05.2011 20:23
дискретное преобразование фурье alexdadaev Общие вопросы C/C++ 2 21.01.2011 13:42
Преобразование Фурье fina Помощь студентам 0 17.06.2010 14:00