Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/65: Рейтинг темы: голосов - 65, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 04.01.2013
Сообщений: 5
1

Спектральный анализ данных в Matlab

05.01.2013, 00:52. Показов 12407. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день! Зарегистрировался на вашем форуме, т.к. надеюсь, что вы мне поможете. Сначала небольшое отступление - я аспирант, специальность "Автоматизация процессов управления", школа моего научрука занимается применением элементов ИИ в нефтегазовой промышленности. В моем случае, это нейросети. Но, для начала (а у меня только первый месяц учебы прошел) мне нужно разобраться с объектом исследования. Теперь, непосредственно к теме.
У меня есть файл с двухмерным массивом данных из 64 столбцов (температура, давление и т.д. - параметры с разных точек газоперекачивающего агрегата) и около 7000 строчек (данные за месяц, снимаются каждые 5 минут +- отдельные интервалы нулей). Мне надо исследовать их статистические характеристики. Само собой, проще всего мне это сделать в Матлабе, хотя я не работал с ним со второго курса, но кое-что помню. Знания по матану и обработке сигналов есть кое-какие, но, видимо, недостаточные. Я исключил нули (там, где это оправдано), центрировал значения относительно 0, получил графики распределения и плотности распределения, автокорелляционную и автоковариационную функцию. Проблема возникла со спектральной плотностью - pcov(массив,1) резко опускалась в 0 во всех случаях. Пошарив по вашему форуму, набрел на этот код:
Matlab M
1
2
X = abs(fft(x));
plot(X(1:length(x))), grid;
Здесь уже получились кое-какие результаты. Но правильны ли они? Подхожу к конкретному вопросу, ради которого налил здесь воды: мне нужно выяснить, есть ли закономерности, повторяющиеся с некоторой частотой, и, собственно эту частоту. Матаппарат меня не особо интересует, но буду рад узнать что-то новое. А вот функции Matlab, которые я мог бы практически применить и пример такого применения мне очень нужны. В дополнение привожу рисунок - первый график - функция, второй - результат кода выше, третий - плотность, четвертый - распределение, пятый - ковариация, шестой - pcov(data,1).
Миниатюры
Спектральный анализ данных в Matlab  
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.01.2013, 00:52
Ответы с готовыми решениями:

Гармонический и спектральный анализ в Matlab
Доброго времени суток! Сразу прошу прощения за создание аналогичной темы, но в похожих темах ответа...

Спектральный анализ несинусоидального сигнала в Matlab
Доброго времени суток! Прошу Вашей помощи так как в матлабе я новичок, только учусь, поэтому если,...

Спектральный анализ напряжения
Всем привет, сижу мучаюсь который день как собственно сделать спектральный анализ выходного сигнала...

Спектральный анализ функции
Помогите провести спектральный анализ следующей функции...

7
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
05.01.2013, 09:43 2
было бы значительно проще если бы вы выложили данные и код, а не только графики.
Ладно, что можно сказать по графикам:
Цитата Сообщение от slabinoha Посмотреть сообщение
Проблема возникла со спектральной плотностью - pcov(массив,1) резко опускалась в 0 во всех случаях
Все правильно - в данных имеется постоянная составляющая. Поэтому основная часть спектра сосредоточена около нулевой частоты, а остальная часть на графике(в данном масштабе) практически не видна. То же самое на втором графике. Собственно второй график и последний имеют довольно схожий смысл - второй это амплитудный спектр построенный с помощью fft, последний оценка спектральной плотности мощности ковариационным методом.
Цитата Сообщение от slabinoha Посмотреть сообщение
центрировал значения относительно 0
вот это должно было решить данную проблему, однако на первом графике видно, что это не сделано.
Цитата Сообщение от slabinoha Посмотреть сообщение
нужно выяснить, есть ли закономерности, повторяющиеся с некоторой частотой, и, собственно эту частоту
по поводу выявления скрытых периодичностей в инете полно статей.
2
0 / 0 / 0
Регистрация: 04.01.2013
Сообщений: 5
05.01.2013, 13:36  [ТС] 3
Первым графиком я выложил просто сигнальную функцию. Но ведь pcov базируется на ковариации, разве нет? А автоковариационная функция по определению работает с центрированными значениями. А по поводу работы над центрированными значениями во втором графике - спасибо, попробую.
0
117 / 116 / 8
Регистрация: 23.12.2012
Сообщений: 195
05.01.2013, 14:12 4
Судя по графикам, сигнал на первом рисунке представляет собой реализацию нормального белого шума. По крайней мере, очень на это похоже. Функция и плотность распределения, а также АКФ имеют характерный вид.
1
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
05.01.2013, 15:31 5
Цитата Сообщение от Nagdiel Посмотреть сообщение
реализацию нормального белого шума.
я бы не стал так утверждать. Если характер распределения близок к гауссовскому, это еще не означает что шум белый. Об окраске шума можно утверждать только по спектру, а его при наличии постоянки не очень видно. Почему то многие путают понятия "белый" и "гауссов" шум, хотя белый шум может быть не гауссовым, а гауссов не белым.

Цитата Сообщение от slabinoha Посмотреть сообщение
Но ведь pcov базируется на ковариации, разве нет? А автоковариационная функция по определению работает с центрированными значениями
Я честно говоря внутрь функции не лазил, не очень хорошо представляю себе как она работает. По определению ковариации, да, она должна быть центрирована. Но! В этом случае что, она игнорирует нулевую частоту? Но ведь такая спектральная оценка будет не верна! Видимо внутри функции постоянка как то все таки учитывается и домешивается на выходе. Посмотрим на примере кода:
Matlab M
1
2
3
4
5
x = rand(1,1024);
% x = x - mean(x);
X = abs(fft(x));
plot(X(1:end/2));
figure; plot(pcov(x, 1))
Раскомментируйте вторую строку и сравните результат - с постоянной составляющей и без.
Кстати это пример как раз не гауссовова белого шума)
1
117 / 116 / 8
Регистрация: 23.12.2012
Сообщений: 195
05.01.2013, 16:55 6
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от vital792 Посмотреть сообщение
я бы не стал так утверждать. Если характер распределения близок к гауссовскому, это еще не означает что шум белый. Об окраске шума можно утверждать только по спектру, а его при наличии постоянки не очень видно. Почему то многие путают понятия "белый" и "гауссов" шум, хотя белый шум может быть не гауссовым, а гауссов не белым.
vital792, согласен с Вами в том, что многие путают эти понятия. Но я, уверяю Вас, хорошо их различаю. Мой вывод о коррелированности сигнала сделан по автокорреляционной функции (АКФ), которая имеет только один пик в нуле. Это свидетельствует об отсутсвии кореляции между сдвинутыми во времени значениями сигнала. Спектральная плотность мощности, кстати сказать, однозначно связана с АКФ преобразованием Фурье, так что скорей всего при правильном рассчете получится равномерной.

Добавлено через 1 час 2 минуты
slabinoha, vital792,

по поводу функции pcov и ковариационного метода. В книге Сергиенко А.Б. "Цифровая обработка сигналов"(2003), на стр. 69 есть интересное замечание, смысл которого примерно в следующем: в отечественной и иностранной литературе используют совершенно противоположные определения для ковариационной и корреляционной функции (в плане того, где выполняется центрирование, а где нет).

См., например, определение автокорреляционной функции на википедии. Когда речь идет о случайных функциях - используется матожидание произведения центрированных значений (надо полагать, что для ковариационной функции используются нецентрированные значения). Однако если речь о конкретной реализации сигнала, то автокорреляционная функция вычисляется без центрирования. Если википедия кажется ненадежным источником, сразу оговорюсь, такое же определение у Сергиенко и в книге Баскакова "Радиотехнические цепи и сигналы".

Так что путаница может возникнуть изрядная. Раз результат работ pcov зависит от центрирования, приходится предположить, что внутри функции оно не выполняется.
3
0 / 0 / 0
Регистрация: 04.01.2013
Сообщений: 5
05.01.2013, 18:09  [ТС] 7
Выкладываю аналогичные графики для другого параметра - первый рисунок - нецентрированные значения, второй - центрированные. pcov() все так же непрерывно стремится к нулю, в принципе на всех графиках изменились только границы. Меня интересует следующее - теоретически, если я применяю fft() в том виде, в котором я сделал здесь и выше, я получу функцию спектральной плотности относительно частот? Если нет, ткните носом в ошибку. Вообще, может я где-то в корне неправ и мне нужно применять другие функции и методы? Подскажите, пожалуйста.
Миниатюры
Спектральный анализ данных в Matlab   Спектральный анализ данных в Matlab  
0
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
06.01.2013, 09:31 8
Цитата Сообщение от Nagdiel Посмотреть сообщение
вывод о коррелированности сигнала сделан по автокорреляционной функции (АКФ), которая имеет только один пик в нуле
шум сосредоточенный в полосе будет давать такой же пик, но не будет белым.
Цитата Сообщение от Nagdiel Посмотреть сообщение
Спектральная плотность мощности, кстати сказать, однозначно связана с АКФ преобразованием Фурье, так что скорей всего при правильном рассчете получится равномерной.
спектральная плотность связана с акф теоремой Парсеваля. Однако из этого не следует, что спектр будет равномерным по всей полосе частот.
Ну да ладно, я уже придираюсь к терминологии, хотя сам не люблю таких людей это мало относится к теме вопроса.

Цитата Сообщение от Nagdiel Посмотреть сообщение
в отечественной и иностранной литературе используют совершенно противоположные определения для ковариационной и корреляционной функции
да, да - тоже с таким сталкивался. Однако в матлабе функция xcorr() выполняет привычную нам корреляцию, а функция xcov() - ковариацию.

Цитата Сообщение от slabinoha Посмотреть сообщение
pcov() все так же непрерывно стремится к нулю
возможно просто колебание очень низкой частоты, близкой к нулевой? Все таки, если бы вы скинули данные, было бы проще анализировать.

Цитата Сообщение от slabinoha Посмотреть сообщение
теоретически, если я применяю fft() в том виде, в котором я сделал здесь и выше, я получу функцию спектральной плотности относительно частот?
Теоретически, когда вы выполняете преобразование Фурье, вы получаете коэффициенты разложения, соответствующие частотам в данном разрешении(зависящем от длины окна). От этих коэффициентов, соответствующих квадратурной и синфазной компонентам, легко перейти к любому интересующему вас спектру - амплитудному, фазовому, или спектру мощности.

Цитата Сообщение от slabinoha Посмотреть сообщение
нужно применять другие функции и методы?
методов полно, но надо же с чего то начинать) Вы же аспирант - будущий соискатель. Вот и попробуйте разные методы и выберите какой по вашему лучше.

Добавлено через 9 минут
Цитата Сообщение от vital792 Посмотреть сообщение
спектральная плотность связана с акф теоремой Парсеваля
То есть Винера-Хинчина, сори. Пора бы и мне освежить теорию, почитать учебники. Начинаю забывать основы
1
06.01.2013, 09:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.01.2013, 09:31
Помогаю со студенческими работами здесь

Спектральный анализ в матлабе
то что нужно сдлелать смотрите пожалуйста ниже=) вариант 5

Спектральный анализ и статистика
Добрый день, Уже достаточно долго пытаюсь разобраться с fft и оцениванием результатов. В итоге,...

Спектральный анализ осциллограмм
Доброго времени суток! Нужно сделать спектральный анализ средствами mathcad или matlab. Только...

Спектральный анализ сигнала
Добрый день! Нужна помощь, есть сигнал записанный на осциллографе в формате exsel таблицы, 2...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru