nikrubab
1

Быстрое преобразование Фурье (как быть если частота дискретизации 1/3600 )

06.03.2013, 17:25. Показов 5522. Ответов 7
Метки нет (Все метки)

Всем доброго времени суток!
Опишу в кратце поставленную задачу:
есть БД(база данных).в нее поступают данные с датчика,данные числовые,а именно температура(тоесть в БД каждый час заносятся данные вида 36.6 , 37,38,36 и тп)
и есть скажем так эталонные температурные данные, уже занесенные в БД.
вот моя задача проанализировать мои данные на предмет совпадения с эталонными.
но чтобы максимально приблизить их к эталонным (для того чтобы сравнить) с ними чтото необходимо сделать.

преподователь посоветовал работать с рядами Фурье.

нашел на этом форуме похожее задание
Быстрое преобразование Фурье. Нужно определить частоты и амплитуды сигналов.
попробовал воспользоваться кодом,который там дан . Поставил свои величины,в итоге выдает ошибку(Error using plot
Vectors must be the same lengths.

Error in Untitled (line 21)
plot(T,Signal);% Построение сигнала) и ничего не строит.


на всякий случай код

Matlab M
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
%clear all% Очистка памяти
 
FlowRes = textread('FlowResults.txt','%f');
%% Параметры
Tm=86400;% Длина сигнала (с)
Fd=1/3600;% Частота дискретизации (Гц)
FftL=1000;% Количество линий Фурье спектра
 
T=0:1/Fd:Tm;
Signal = (FlowRes');
 
%% Спектральное представление сигнала
FftS=abs(fft(Signal,FftL));% Амплитуды преобразования Фурье сигнала
FftS=2*FftS./FftL;% Нормировка спектра по амплитуде
FftS(1)=FftS(1)/2;% Нормировка постоянной составляющей в спектре
 
%% Построение графиков
figure(1)
subplot(2,1,1);% Выбор области окна для построения
plot(T,Signal);% Построение сигнала
title('Сигнал');% Подпись графика
xlabel('Время (с)');% Подпись оси х графика
ylabel('Амплитуда (Попугаи)');% Подпись оси у графика
 
F=0:Fd/FftL:Fd/2-Fd/FftL;% Массив частот вычисляемого спектра Фурье
 
subplot(2,1,2);% Выбор области окна для построения
plot(F,FftS(1:length(F))),grid;% Построение спектра Фурье сигнала
title('Спектр сигнала');% Подпись графика
xlabel('Частота (Гц)');% Подпись оси х графика
ylabel('Амплитуда (Попугаи)');% Подпись оси у графика
фаил FlowResults используемый в программе
Вложения
Тип файла: txt FlowResults.txt (144 байт, 32 просмотров)
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.03.2013, 17:25
Ответы с готовыми решениями:

Быстрое преобразование Фурье
Доброго времени суток. Есть такая задача - даны два сигнала. Обычные сигналы синуса по времени....

Быстрое преобразование Фурье
Всем привет очень нужна помощь. Есть на выбор несколько сигналов (функций) нужно разложить одну на...

Быстрое преобразование Фурье функции синуса
Здравствуйте Пытаюсь разобраться с БПФ на простом примере Есть функция sin частота 10гц амплитуда...

Быстрое преобразование фурье сигнала из файла *.mat
Есть файл в котором расположено ЭКГ пациента, нужно из етого файла получить БПФ я только начал...

7
nikrubab
06.03.2013, 17:43 2
поправил фаил FlowResults.txt

и код программы

Matlab M
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
%clear all% Очистка памяти
 
FlowRes = textread('FlowResults.txt','%f');
%% Параметры
Tm=86400;% Длина сигнала (с)
Fd=1/3600;% Частота дискретизации (Гц)
FftL=1024;% Количество линий Фурье спектра
 
T=0:1/Fd:Tm-3600;
Signal = (FlowRes');
 
%% Спектральное представление сигнала
FftS=abs(fft(Signal,FftL));% Амплитуды преобразования Фурье сигнала
FftS=2*FftS./FftL;% Нормировка спектра по амплитуде
FftS(1)=FftS(1)/2;% Нормировка постоянной составляющей в спектре
 
%% Построение графиков
figure(1)
subplot(2,1,1);% Выбор области окна для построения
plot(T,Signal);% Построение сигнала
title('Сигнал');% Подпись графика
xlabel('Время (с)');% Подпись оси х графика
ylabel('Амплитуда (Попугаи)');% Подпись оси у графика
 
F=0:Fd/FftL:Fd/2-Fd/FftL;% Массив частот вычисляемого спектра Фурье
 
subplot(2,1,2);% Выбор области окна для построения
plot(F,FftS(1:length(F))),grid;% Построение спектра Фурье сигнала
title('Спектр сигнала');% Подпись графика
xlabel('Частота (Гц)');% Подпись оси х графика
ylabel('Амплитуда (Попугаи)');% Подпись оси у графика
стало строить следующее


Почему такой спектр получается?
Миниатюры
Быстрое преобразование Фурье (как быть если частота дискретизации 1/3600 )  
Вложения
Тип файла: txt FlowResults.txt (134 байт, 25 просмотров)
2013 / 1285 / 60
Регистрация: 05.06.2010
Сообщений: 2,213
07.03.2013, 11:29 3
Цитата Сообщение от nikrubab Посмотреть сообщение
Почему такой спектр получается?
А какой он должен получиться? Если вы имеете ввиду что максимум на нулевой частоте - так это понятно, все отсчеты сигнала положительны, переходов через ноль нет. Можно перед расчетом спектра центрировать процесс, вычитая из сигнала мат ожидание:
Matlab M
1
2
3
4
Signal = (FlowRes');
 
Signal = Signal - mean(Signal);
...
0
10218 / 6598 / 495
Регистрация: 28.12.2010
Сообщений: 21,161
Записей в блоге: 1
07.03.2013, 11:54 4
вот моя задача проанализировать мои данные на предмет совпадения с эталонными.
тут не FFT надо использовать, а строить АКФ. Вот она и будет адекватно характеризовать ваш случай.
1
2013 / 1285 / 60
Регистрация: 05.06.2010
Сообщений: 2,213
07.03.2013, 12:05 5
raxp, только наверно не акф, а вкф принятых данных с эталоном.
Цитата Сообщение от nikrubab Посмотреть сообщение
преподователь посоветовал работать с рядами Фурье.
с преподавателем не поспоришь). Наверно он имел ввиду расчет корреляции через fft - чтож, вполне логично, стандартная матлабовская xcorr() так и делает...
0
10218 / 6598 / 495
Регистрация: 28.12.2010
Сообщений: 21,161
Записей в блоге: 1
07.03.2013, 12:44 6
...все же АКФ, ибо сигнал по времени ограничен, да и красивше выглядит.

ввиду расчет корреляции через fft
именно это и имел, напрямую FFT не дает нужных показателей.
1
2013 / 1285 / 60
Регистрация: 05.06.2010
Сообщений: 2,213
07.03.2013, 12:55 7
raxp, почему акф то? Сигнал же нужно сравнить с образцом, значит их взаимную корреляцию и надо смотреть... А спектры перемножать имеет смысл, чтобы на выходе получить линейную корреляцию, а не циклическую, как в функции xcorr(). Хотя можно использовать и ее, отрезав лишнее, но напрямую как то удобнее, да и нагляднее
1
10218 / 6598 / 495
Регистрация: 28.12.2010
Сообщений: 21,161
Записей в блоге: 1
07.03.2013, 13:01 8
...если с одним образцом, да. Но как быть с несколькими образцами, как в первом посту, тогда еще и определять ближайшее к нужному образцу придется и каждый раз считать ВКФ с нужным образцом.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.03.2013, 13:01

Быстрое преобразование Фурье. Нужно определить частоты и амплитуды сигналов.
Здравствуйте, Уважаемые. Нужна ваша помощь. Нужно определить частоты и амплитуды сигналов. Из...

Частота звука в Wav файле (найти через Быстрое Преобразование Фурье)
Собственно, нужно найти частоту звука в Wav файле. Везде говорят о БПФ, но я нигде не нашел...

Найти коэффиценты разложения в ряд Фурье, используя быстрое преобразование Фурье (БПФ)
Прошу помочь мне в нелеггкой задачке нужно для заданной на периоде 2∏ функции f(x) найти...

Быстрое преобразование Фурье. Как узнать амплитуды и частоты?
Произвёл быстрое преобразование. Получил значения. Как из этого графика определить амплитуду и...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

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