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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
Petrow
Сообщений: n/a
#1

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

17.05.2011, 12:20. Просмотров 1583. Ответов 0
Метки нет (Все метки)

Задача: есть косинусоида, например 18*cos(100*2*3.14*t+12) необходимо посчитать ее спектр, т.е. разложить в ряд Фурье и "увидеть" одну палку на значении 100(т.е. все остальные нули).....

вот программа....сначала массив(arrayA[i]) забивается значениями синусоиды...а затем считаю фурье по всем известной формуле дискретного преобразования....суть в том что выдает мне то же количество значений(300) но другие числа...хотя должно быть только одно! т.к. спектр косинуса-1 значение(палка)


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
#include "stdafx.h"
#include "math.h"
#include <iostream>
using namespace std;
float main(){
    ////////////////////////////////////////////////////////////////////
 
    float  x,d,c,y;// х отвечает за действ. часть, у за мнимую. d и c введены для подсчета cos и sin(для удобства;)
    float  summa_D=0;//изначальная сумма для к-того элемента(палки), которая будет считать действительную часть
    float  summa_M=0;//изначальная сумма для к-того элемента(палки),которая будет считать мнимую часть
    float t=0;
    int  i,k; //номер палки(к), 
    float N=300; // всего отсчетов
    float arrayA[300];
    int n; // номер отсчета, в результате дискретизации
    setlocale(LC_ALL,"russian_russia");// 
    cout<<"Номер   | Действующие    |   Мнимые |"<<endl;// 
    for (i=0; i<3; i++){
        arrayA[i]=cos(100*2*3.14*t+12);
            t=t+1;
    }
   for (k=0; k<N; k++)
   {
       for (i=0; i<3;i++)
       {
        d=cos((2*3,14*i*k)/N); //подсчитаем косинусную сост-ую(дейсвительную)
        c=sin((2*3,14*i*k)/N);//подсчитаем синусную сост-ую(т.е. мнимую)
        x=arrayA[i]*d;
        y=-(c*arrayA[i]);
        summa_D=summa_D+x; // собсна суммируем что получилось=)))
        summa_M=summa_M+y;
       }
   cout<<k<<"           "<<summa_D<<"             "<<summa_M<<"     "<<endl;
   }
return(0); //
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2011, 12:20     Дискретное преобазование фурье
Посмотрите здесь:

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

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

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

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

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

Быстрое преобразование Фурье - C++
Это пример на сайте wikipedia Быстрого Преобразование Фурье. Два вопроса. 1)Как получить массив анализируемых данных для wav файла....

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

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

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

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

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

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


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

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

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