Страница 3 из 3

Re: дискретное преобразование фурье на AVR\Pic24F

Добавлено: Вс фев 24, 2013 00:40:45
спящий
Подскажите я правильно ПФ понял?
Спойлерhttp://lightportal.at.ua/publ/spektroanalizatory/12_kanalnyj_analizator_spektra_na_atmega16_na_osnove_diskretnogo_preobrazovanija_fure_dpf_i_uolsha/18-1-0-55
Суть такая У нас есть измерянный сигнал 512 выборок(в зависимости от дискритизации АЦП 19000 и частоты(150Гц)), потом мы делаем массив идеальной синусойды.

Потом как бы натягиваем Идеальную на Измеренную находя среднее реальное и мнимое значения.
Re = A*cos[];;
Im = A*sin[];
A - выборки sin,cos- массив.

находим Амплитуду частоты спектра 150Гц = sqrt(Re^2+Im^2);

ЦАП делаем так чтобы измерение начал от пересечения напряжения с 0 в U+,чтобы совпало с СИНУСОМ по ФАЗЕ ну соответственно и выборки ?

Re: дискретное преобразование фурье на AVR\Pic24F

Добавлено: Вс фев 24, 2013 01:07:25
Alexeyslav
что значит "натягиваем"? нет такого понятия в математике...

не нужно синхронизировать с нулем.

Re: дискретное преобразование фурье на AVR\Pic24F

Добавлено: Вс фев 24, 2013 07:36:55
спящий
Короче,идеальную синусойду умножаем на измереную?)
Re = A*cos[];;
Im = A*sin[];
Они же должны совпадать по фазе?

Re: дискретное преобразование фурье на AVR\Pic24F

Добавлено: Вс фев 24, 2013 11:17:57
Jack_A
Только по частоте. В результате вычисления соотношение действительной и мнимой части определит сдвиг фазы измеренного сигнала относительно начала отсчета ( соответственно, относительно "опорной" синусоиды. ) Амплитуда в любом случае будет рассчитана одинаково.

Re: дискретное преобразование фурье на AVR\Pic24F

Добавлено: Пт мар 18, 2016 20:45:41
baghear
Добрый день, подскажите пожалуйста программу в которую можно было бы вбить отсчеты полученные с АЦП, чтобы она построила спектр?

Re: дискретное преобразование фурье на AVR\Pic24F

Добавлено: Пт мар 18, 2016 21:00:29
YS
Я бы записал отсчеты в формате WAV-файла (он очень простой), а потом открыл бы его звуковым редактором. Строить спектры умеют почти все звуковые редакторы...

Хотя вопрос, какой частотный диапазон вас интересует. Ну а так, стандартные пути - построить спектр в MathCAD или MatLab. Можно и самому сообразить простенькую программку для построения спектра, на Python или Lua, например (разумеется, используя готовую библиотеку БПФ).

Re: дискретное преобразование фурье на AVR\Pic24F

Добавлено: Пт мар 18, 2016 21:17:47
baghear
Mathcad уже скачал, но не нашёл примера как нарисовать спектр имея отсчёты.

Re: дискретное преобразование фурье на AVR\Pic24F

Добавлено: Вс мар 20, 2016 00:15:57
baghear
Может кто-нибудь подскажет как имея отсчеты в маткаде построить спектр?Или в др программе.

Re: дискретное преобразование фурье на AVR\Pic24F

Добавлено: Вс мар 20, 2016 12:08:01
YS
1. Что за АЦП?
2. Какая разрядность и частота дискретизации?
3. В каком виде у вас отсчеты (текстовый файл, бинарный файл)?

А так, в MathCAD есть функции READPRN и WRITEPRN для того, чтобы, соответственно, загружать данные из текстового файла и экспортировать их туда. Соответственно, загружаете данные, применяете функцию БПФ и строите график.

Re: дискретное преобразование фурье на AVR\Pic24F

Добавлено: Вс мар 20, 2016 12:40:40
baghear
1.Встроенный в stm32f103
2.12 бит и 1М
3.Отсчеты получаю в программе, планировал вводить в ручную.

Re: дискретное преобразование фурье на AVR\Pic24F

Добавлено: Вс мар 20, 2016 13:09:48
YS
Отсчеты получаю в программе, планировал вводить в ручную.
:shock:

Вот у вас частота дискретизации 1 MSPS. Значит предельная частота по Котельникову 500 kHz. Пускай мы хотим получить разрешение по частоте хотя бы 1 kHz. Тогда для одного преобразования нам потребуется как минимум 1 MSPS / 1 kHz = 1000 отсчетов.

Вы хотите вбивать тысячу чисел вручную? :shock: Так-то проблем нет, тогда вам даже READPRN/WRITEPRN не нужен. Просто берете, вбиваете табличку и применяете БПФ.

Re: дискретное преобразование фурье на AVR\Pic24F

Добавлено: Вс мар 20, 2016 13:36:49
baghear
То есть от количества отсчетов зависит разрешение по частоте.
А Вы не могли бы скинуть скрин, как это сделать?

Re: дискретное преобразование фурье на AVR\Pic24F

Добавлено: Вс мар 20, 2016 15:41:57
YS
То есть от количества отсчетов зависит разрешение по частоте.
Разумеется. Это базовое свойство дискретного преобразования Фурье. Размер результирующего буфера равен размеру исходного, в результирующем буфере умещаются частотные компоненты от нулевой частоты до частоты дискретизации. Соответственно, одна выборка соответствует диапазону Fd/N, где Fd - частота дискретизации, N - количество выборок, и в силу теоремы Котельникова-Найквиста смысл имеет только половина отсчетов - до N/2.
А Вы не могли бы скинуть скрин, как это сделать?
Пока нет, может быть попозже. Но так - вводите вектор и применяете к нему функцию FFT(). Как ввести вектор, как применить функцию и построить график - все это описано в документации, да и гуглится неплохо.

Re: дискретное преобразование фурье на AVR\Pic24F

Добавлено: Вс мар 20, 2016 20:57:59
L.O.D
baghear писал(а):Может кто-нибудь подскажет как имея отсчеты в маткаде построить спектр?Или в др программе.
В матлабе это выглядит так:

Код: Выделить всё

SampleLen = 256;
X = dlmread('data.txt', ';');
Y = fft(X,SampleLen);
Pyy = Y.*conj(Y)/SampleLen;
f = 1/SampleLen*(0:SampleLen-1);
plot(f(1:SampleLen/2),Pyy(1:SampleLen/2))
title('Power spectral density')
xlabel('Frequency (Hz)')
data.txt:
"0.5543
0.8368
0.3292
0.2837
0.3915
1.0738
..."

Изображение

А можно и написать что-то свое для ББ:

Изображение


Re: дискретное преобразование фурье на AVR\Pic24F

Добавлено: Пн мар 21, 2016 00:13:16
baghear
Спасибо!!!

Re: дискретное преобразование фурье на AVR\Pic24F

Добавлено: Вт авг 16, 2016 08:19:36
aam
Здравствуйте! Смотрю пример ЦМУ на микроконтроллере, видео работы: yadi.sk/i/D2EXuk__a9eeB и yadi.sk/i/gWmp0aXTZjFRn
и не могу понять - то ли видео у меня тормозит, то ли действительно мигание отстает от звука из-за слишком медленной обработки? :shock: