Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Женя Курило
2 / 2 / 0
Регистрация: 09.12.2010
Сообщений: 10
#1

Дискретное преобразование Фурье - C++

08.05.2013, 12:01. Просмотров 977. Ответов 0
Метки нет (Все метки)

Добрый день! Общем задание (2 картинки). Я знаю, не сложно.
Вот код, который я написал.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <iostream>
#include <cmath>
#include <complex>
#include <iomanip>
 
using namespace std;
const double PI = 3.14159265;
void out_func_value (double f_arr[][80],const int Ngurnal,const double T,const double delta);
int _tmain(int argc, _TCHAR* argv[])
{
    
    const int Ngurnal=16;
    const double T=Ngurnal*1e-6;
    const double delta=T/10;
    //const double PI = 3.14159265;
    // f(x)=Ngurnal*sin(((2*PI)/T)*k*delta)
    double func[2][80];
    out_func_value(func,Ngurnal,T,delta);
    
  
    
    typedef complex <double> C;
    
    C vec[80];
    C i(0,-1);
    C temp;
    for (int k=0;k<80;k++){
        temp=0;
        for (int n=0;n<80;n++){
            temp+=(func[1][n])*(cos(k*n*(2*PI)/80)-sin(k*n*(2*PI/80))*i);
        }
        vec[k]=temp;
    }
    
    
    cout<<endl;
    for (int j=0;j<80;j++)
        cout<<vec[j]<<endl;
    cout<<endl;
    for (int j=0;j<80;j++)
        cout<<abs(vec[j])<<"\t"<<arg(vec[j])<<endl;
    
    cin.get();
    cin.get();
    return 0;
}
void out_func_value (double f_arr[][80],const int Ngurnal,const double T,const double delta)// функция для сохранения значений функции в массив и печати этих значений на экран
{
    cout.setf(ios::left); // устанавливаем выравнивание по левому краю
    for (int i=0;i<80;i++){
        cout<<setw(15)<<(f_arr[0][i]=(((2*PI)/T)*i*delta)); // манипулятор setw  используется для задания ширины вывода
        cout<<setw(20)<<(f_arr[1][i]=(Ngurnal*cos(((2*PI)/T)*i*delta)))<<endl;
    }
        
}
Но когда я проверял свои расчеты в Matlab, я обнаружил, что они неверны. Я предполагаю идет переполнение типа. С long double тоже самое. Как можно решить эту проблему? Заранее спасибо!
Миниатюры
Дискретное преобразование Фурье   Дискретное преобразование Фурье  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.05.2013, 12:01     Дискретное преобразование Фурье
Посмотрите здесь:

Дискретное преобразование Фурье округляет данные - C++
Делаю дискр преобраование Фурье синусоиды берем синусоиду на интервале от 0 до 2п и разбиваем ее на количество точек, которое вводим с...

Быстрое преобразование Фурье - C++
Помогите реализовать задачу. Дана волновая функция(6sin5pit), необходимо преобразовать её спектр с помощью быстрого преобразования Фурье....

Преобразование Фурье. Фильтрация изображения - C++
Имеется программа, выполняющая фильтрацию видео с помощью фурье преобразования на с++ с использованием OpenCV/ Кто нибудь может помочь...

Обратное быстрое преобразование фурье - C++
Прямое преобразование работает корректно, а вот обратное возвращает странную дугу в независимсти от исходного сигнала. &quot;Не быстрый&quot;...

Быстрое преобразование Фурье по составному основанию - C++
Написал быстрое преобразование Фурье по составному основанию. Не запускается, выдает ошибку: &quot;Debug Error! Run-Time Check Failure #2...

Преобразование фурье для вещественных чисел - C++
Есть массив вещественных чисел. На выходе нужно получить массив комплексных через быстрое преобразование фурье. Или массив вещественных. Но...

Преобразование Фурье. Рекурсия сжирает память, как исправить? - C++
Добрый день. Пишу преобразование Фурье, рекурсивное, чтобы не париться. Но у меня много уходит памяти. Как исправить не понимаю. Код...

Разложение в ряд Фурье - C++
Помогите с задачкой) 7.txt находиться здесь http://www.cyberforum.ru/cpp-beginners/thread1014644.html

Сходимость ряда Фурье - C++
Добрый день! Помогите пожалуйста решить это задание: Исследовать сходимости ряда Фурье по синусам для функции f(x)={если 1, при...

Сходимость рядов Фурье - C++
Прошу помощи знающих людей, т.к. сам новичок в С++. Тема: Сходимость рядов Фурье Моя программа не выдает верные значения. В чем моя...

Вычисление Фурье через IPP - C++
Добрый день. Я пытаюсь посчитать спектр какого-нибудь сигнала при помощи функции IppStatus ippsFFTFwd_CToC_32f(const Ipp32f*...

Ошибка в функции преобразования Фурье - C++
Здравствуйте! Делаю гитарный тюнер, и застряла на моменте определения частоты уже снятого с микрофона звука. Звук с микрофона снимается в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru