0 / 0 / 0
Регистрация: 30.03.2015
Сообщений: 3
1

Диаграмма Боде корреляции двух сигналов

31.03.2015, 11:03. Показов 2089. Ответов 4
Метки нет (Все метки)

Добрый день.

Имеется два биологических сигнала, представленные в виде двух векторов (A и B), и массив временных точек (time).
Ожидается, что разность фаз сигналов составляет 180 градусов.

Необходимо построить диаграмму Боде. То есть найти зависимость амплитуд и фаз в частотной области.
Для этого использую кросс-корреляцию.

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
32
33
34
35
36
37
38
39
40
41
42
%%  Data upload
Data = xlsread('Data.xls');
time = Data(:,1);
A = Data(:,2);
B = Data(:,3);
 
%% Cross-correlation
e = fft(A);
f = fft(B);
 
g = e.*conj(f);
 
h = ifft(g); % cross correlation coefficiens
 
%% Plots
figure('Name','Corr Coef')
plot(time, h)
grid on
xlabel('Time')
ylabel('Amp')
 
% Amp = 10*log10(h); % Перевод в Db
 
F = (1:length(e))*(1/(time(2)-time(1)))/length(e); %Частотная сетка
 
figure('Name','Amp')
plot(F,abs(g))
% semilogx(F,abs(h))
% semilogx(F,Amp)
%xlim([0 10])      
grid on
xlabel('Frequency [Hertz]')
ylabel('Amp [???]')
 
phase = angle(g)*180/pi;
 
figure('Name','Phase')
plot(F,phase)
% xlim([0 10])
grid on
xlabel('Frequency [Hertz]')
ylabel('Phase [Degrees]')
Вопрос в том, как амплитуду в графике ачх (второй по счёту) перевести в реальные значения (значения отношений одного сигнала к другому)? Это отношение должно колебаться в районе единицы.
А также, правильно ли я считаю фазовый сдвиг в частотном диапазоне? Меня интересует промежуток [0 10]Гц. Но там фазовым сдвигом в 180 градусов и не пахнет.
Вложения
Тип файла: xls Data.xls (59.0 Кб, 4 просмотров)
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.03.2015, 11:03
Ответы с готовыми решениями:

Корреляции сигналов
Здравствуйте. Помогите, пожалуйста! У меня есть 20 сигналов. Мне нужно найти корреляции между...

Сравнение спектра двух сигналов
Здравствуйте! Мне дали задание сравнить спектры двух сигналов. Фурье преобразование сделал, спектры...

Создание двух сигналов в MATLABe
Доброго времени суток. Возникла проблема с одной задачкой. Необходимо создать 2 сигнала, начало и...

Нахождение разницы двух сигналов
Здравствуйте. Имеется 2 сигнала: один до обработки, другой после. Нужно посчитать разницу этих...

4
Эксперт по электронике
938 / 838 / 121
Регистрация: 23.11.2012
Сообщений: 2,489
01.04.2015, 09:20 2
Цитата Сообщение от lanabanani Посмотреть сообщение
Для этого использую кросс-корреляцию.
Велосипед уже придуман. Он называется xcorr.
Я, так понимаю, Вам нужно найти что то на подобии передаточной характеристики биообъекта? Т.е. отношение амплитуд и разность фаз?
0
0 / 0 / 0
Регистрация: 30.03.2015
Сообщений: 3
01.04.2015, 09:42  [ТС] 3
Хорошо, пусть корреляция находится с помощью xcorr:
Matlab M
1
h = xcorr(B,A,'coeff')
Тем не менее, вопрос не снимается.
Как коэффициенты корреляции перевести в значения амплитуд?

Два сигнала выглядят, как на картинке. Мне нужно найти отношения-пиковых-амплитуд в частотной области.
А также Фазы в частотной области.
Миниатюры
Диаграмма Боде корреляции двух сигналов  
0
Эксперт по электронике
938 / 838 / 121
Регистрация: 23.11.2012
Сообщений: 2,489
02.04.2015, 03:36 4
lanabanani, уверенны, что именно пиковых амплитуд? Может просто поточечно сравнить амплитудный и фазовый спектры?
0
0 / 0 / 0
Регистрация: 30.03.2015
Сообщений: 3
02.04.2015, 12:20  [ТС] 5
R2D2,
Цитата Сообщение от R2D2 Посмотреть сообщение
Может просто поточечно сравнить амплитудный и фазовый спектры?
Да, наверное, так.

Попробовала другой способ, через создание динамической системы командой iddata, и затем, используя два разных спектральных анализа(tfest и etfe), строю bode график.
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
Data = xlsread('Data.xls');
time = Data(:,1);
A = Data(:,2);
B = Data(:,3);
tr = time(2)-time(1);
 
opts = bodeoptions('cstprefs');
opts.FreqScale = 'linear';
opts.MagScale = 'linear';
opts.PhaseUnits = 'deg';
opts.MagUnits = 'abs';
opts.Grid = 'on';
opts.Xlim = [0 10];
opts.Title.FontSize = 14;
opts.XLabel.FontSize = 14;
opts.YLabel.FontSize = 14;
 
DAT = iddata(A,B,tr);   %time domain
sys = tfest(DAT, 2);
figure('Name','Bode1 (tfest)')
bodeplot(sys, opts);
 
FDAT = fft(DAT);    %frequency domain
sys1 = etfe(FDAT, 128);
figure('Name','Bode1 (etfe)')
bodeplot(sys1, opts);
Но получаются довольно разные результаты.
Миниатюры
Диаграмма Боде корреляции двух сигналов   Диаграмма Боде корреляции двух сигналов  
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.04.2015, 12:20

ВКФ от определенного количества отсчетов двух сигналов
Имеется сигнал. До и после кодека. Необходимо получить ВКФ от различного количества отсчетов оного...

Коэффициент корреляции сигналов
Здравствуйте, знатоки! Помогите разобраться с задачкой: нужно найти коэффициент корреляции двух...

Коэффициент корреляции для двух нормально заданных случайно величин
Здравствуйте. Есть две нормальные величины, X=N(m1, 1), Y=N(m2, 1). Подскажите пожалуйста, как...

Вычисление коэффициента корреляции между соответствующими данными двух одномерных массивов
Нужно составить программу 1.Вычисление коэффициента корреляции между соответствующими данными двух...


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

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

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