exponenta event banner

mscohere

Квадратичная когерентность

Описание

cxy = mscohere(x,y) находит оценку когерентности в квадрате величины, cxy, входных сигналов, x и y.

  • Если x и y оба вектора, они должны иметь одинаковую длину.

  • Если один из сигналов является матрицей, а другой - вектором, то длина вектора должна равняться количеству строк в матрице. Функция расширяет вектор и возвращает матрицу оценок когерентности в квадрате величины от столбца к столбцу.

  • Если x и y - матрицы с одинаковым количеством строк, но разным количеством столбцов, то mscohere возвращает матрицу множественной когерентности. М-й столбец cxy содержит оценку степени корреляции между всеми входными сигналами и m-м выходным сигналом. Дополнительные сведения см. в разделе Когерентность в квадрате величины.

  • Если x и y - матрицы одинакового размера, то mscohere работает по столбцам: cxy(:,n) = mscohere(x(:,n),y(:,n)). Чтобы получить матрицу множественной когерентности, добавьте 'mimo' в список аргументов.

cxy = mscohere(x,y,window) использование window разделиться x и y на сегменты и выполнить оконную обработку. Необходимо использовать не менее двух сегментов. В противном случае квадратичная когерентность равна 1 для всех частот. В случае MIMO количество сегментов должно быть больше количества входных каналов.

cxy = mscohere(x,y,window,noverlap) использование noverlap образцы перекрытия между соседними сегментами.

пример

cxy = mscohere(x,y,window,noverlap,nfft) использование nfft точки выборки для вычисления дискретного преобразования Фурье.

пример

cxy = mscohere(___,'mimo') вычисляет множественную матрицу когерентности для матричных входов. Этот синтаксис может включать любую комбинацию входных аргументов из предыдущих синтаксисов.

[cxy,w] = mscohere(___) возвращает вектор нормализованных частот, w, при котором оценивается квадратичная когерентность.

пример

[cxy,f] = mscohere(___,fs) возвращает вектор частот, f, выраженное в терминах частоты выборки, fs, при котором оценивается квадратичная когерентность. fs должен быть шестым числовым вводом в mscohere. Чтобы ввести частоту выборки и использовать значения по умолчанию предыдущих необязательных аргументов, укажите эти аргументы как пустые, [].

[cxy,w] = mscohere(x,y,window,noverlap,w) возвращает оценку квадратичной когерентности на нормализованных частотах, указанных в w.

[cxy,f] = mscohere(x,y,window,noverlap,f,fs) возвращает оценку когерентности в квадрате величины на частотах, указанных в f.

[___] = mscohere(x,y,___,freqrange) возвращает оценку когерентности в квадрате величины в диапазоне частот, указанном freqrange. Допустимые параметры для freqrange являются 'onesided', 'twosided', и 'centered'.

пример

mscohere(___) без выходных аргументов строит график квадратичной оценки когерентности в текущем окне фигуры.

Примеры

свернуть все

Вычислите и постройте график оценки когерентности между двумя цветными шумовыми последовательностями.

Генерировать сигнал, состоящий из белого гауссова шума.

r = randn(16384,1);

Для создания первой последовательности полосовой фильтр сигнала. Спроектируйте фильтр 16-го порядка, который пропускает нормализованные частоты между 0,2δ и 0,4δ рад/выборка. Задайте затухание полосы останова 60 дБ. Фильтрация исходного сигнала.

dx = designfilt('bandpassiir','FilterOrder',16, ...
    'StopbandFrequency1',0.2,'StopbandFrequency2',0.4, ...
    'StopbandAttenuation',60);
x = filter(dx,r);

Чтобы создать вторую последовательность, сконструируйте фильтр 16-го порядка, который останавливает нормализованные частоты между 0.6δ и 0.8δ рад/выборка. Укажите пульсацию полосы пропускания 0,1 дБ. Фильтрация исходного сигнала.

dy = designfilt('bandstopiir','FilterOrder',16, ...
    'PassbandFrequency1',0.6,'PassbandFrequency2',0.8, ...
    'PassbandRipple',0.1);
y = filter(dy,r);

Оценка квадратичной по величине когерентности x и y. Используйте 512-образное окно Хэмминга. Укажите 500 выборок перекрытия между соседними сегментами и 2048 точками DFT.

[cxy,fc] = mscohere(x,y,hamming(512),500,2048);

Постройте график функции когерентности и наложите частотные характеристики фильтров.

[qx,f] = freqz(dx);
qy = freqz(dy);

plot(fc/pi,cxy)
hold on
plot(f/pi,abs(qx),f/pi,abs(qy))
hold off

Figure contains an axes. The axes contains 3 objects of type line.

Генерировать случайный двухканальный сигнал, x. Генерировать другой сигнал, y, путем фильтрации нижних частот двух каналов и их сложения. Укажите фильтр FIR 30-го порядка с частотой отсечения 0,3δ, разработанный с использованием прямоугольного окна.

h = fir1(30,0.3,rectwin(31));
x = randn(16384,2);
y = sum(filter(h,1,x),2);

Вычислить оценку множественной когерентности x и y. Оконные сигналы с 1024-образным окном Ханна. Укажите 512 образцов перекрытия между соседними сегментами и 1024 точками DFT. Постройте график оценки.

noverlap = 512;
nfft = 1024;

mscohere(x,y,hann(nfft),noverlap,nfft,'mimo')

Figure contains an axes. The axes with title Coherence Estimate via Welch contains an object of type line.

Сравните оценку когерентности с частотной характеристикой фильтра. Падения когерентности соответствуют нулям частотной характеристики.

[H,f] = freqz(h);

hold on
yyaxis right
plot(f/pi,20*log10(abs(H)))
hold off

Figure contains an axes. The axes with title Coherence Estimate via Welch contains 2 objects of type line.

Вычислите и постройте график обычной квадратичной оценки когерентности x и y. Оценка не достигает 1 ни для одного из каналов.

figure
mscohere(x,y,hann(nfft),noverlap,nfft)

Figure contains an axes. The axes with title Coherence Estimate via Welch contains 2 objects of type line.

Генерируйте два многоканальных сигнала, каждый из которых дискретизируется при частоте 1 кГц в течение 2 секунд. Первый сигнал, входной, состоит из трёх синусоид с частотами 120 Гц, 360 Гц и 480 Гц. Второй сигнал, выходной, состоит из двух синусоид с частотами 120 Гц и 360 Гц. Одна из синусоид задерживает первый сигнал на δ/2. Другая синусоида имеет отставание δ/4. Оба сигнала встроены в белый гауссов шум.

fs = 1000;
f = 120;
t = (0:1/fs:2-1/fs)';

inpt = sin(2*pi*f*[1 3 4].*t);
inpt = inpt+randn(size(inpt));
oupt = sin(2*pi*f*[1 3].*t-[pi/2 pi/4]);
oupt = oupt+randn(size(oupt));

Оцените степень корреляции между всеми входными сигналами и каждым из выходных каналов. Для отображения данных используйте окно Хэмминга длиной 100. mscohere возвращает одну функцию когерентности для каждого выходного канала. Функции когерентности достигают максимумов на частотах, совместно используемых входом и выходом.

[Cxy,f] = mscohere(inpt,oupt,hamming(100),[],[],fs,'mimo');

for k = 1:size(oupt,2)
    subplot(size(oupt,2),1,k)
    plot(f,Cxy(:,k))
    title(['Output ' int2str(k) ', All Inputs'])
end

Figure contains 2 axes. Axes 1 with title Output 1, All Inputs contains an object of type line. Axes 2 with title Output 2, All Inputs contains an object of type line.

Переключите входной и выходной сигналы и вычислите функцию множественной когерентности. Используйте то же окно Хэмминга. Отсутствует корреляция между входом и выходом на частоте 480 Гц. Таким образом, в третьей корреляционной функции нет пиков.

[Cxy,f] = mscohere(oupt,inpt,hamming(100),[],[],fs,'mimo');

for k = 1:size(inpt,2)
    subplot(size(inpt,2),1,k)
    plot(f,Cxy(:,k))
    title(['Input ' int2str(k) ', All Outputs'])
end

Figure contains 3 axes. Axes 1 with title Input 1, All Outputs contains an object of type line. Axes 2 with title Input 2, All Outputs contains an object of type line. Axes 3 with title Input 3, All Outputs contains an object of type line.

Повторите вычисления с помощью функции печати mscohere.

clf
mscohere(oupt,inpt,hamming(100),[],[],fs,'mimo')

Figure contains an axes. The axes with title Coherence Estimate via Welch contains 3 objects of type line.

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

[Cxy,f] = mscohere(oupt,inpt(:,[1 2]),hamming(100),[],[],fs);
plot(f,Cxy)

Figure contains an axes. The axes contains 2 objects of type line.

Найдите разности фаз, вычисляя угол перекрестного спектра в точках максимальной когерентности.

Pxy = cpsd(oupt,inpt(:,[1 2]),hamming(100),[],[],fs);
[~,mxx] = max(Cxy);
for k = 1:2
    fprintf('Phase lag %d = %5.2f*pi\n',k,angle(Pxy(mxx(k),k))/pi)
end
Phase lag 1 = -0.51*pi
Phase lag 2 = -0.22*pi

Генерируют два синусоидальных сигнала, дискретизированных в течение 1 секунды каждый на частоте 1 кГц. Каждая синусоида имеет частоту 250 Гц. Один из сигналов отстает от другого по фазе на δ/3 радиан. Встроить оба сигнала в белый гауссов шум единичной дисперсии.

fs = 1000;
f = 250;
t = 0:1/fs:1-1/fs;
um = sin(2*pi*f*t)+rand(size(t));
un = sin(2*pi*f*t-pi/3)+rand(size(t));

Использовать mscohere для вычисления и построения графика квадратичной когерентности сигналов.

mscohere(um,un,[],[],[],fs)

Figure contains an axes. The axes with title Coherence Estimate via Welch contains an object of type line.

Измените название графика, метку оси X и границы оси Y.

title('Magnitude-Squared Coherence')
xlabel('f (Hz)')
ylim([0 1.1])

Figure contains an axes. The axes with title Magnitude-Squared Coherence contains an object of type line.

Использовать gca для получения маркера перемещения к текущим осям. Измените расположение делений. Удалите метку оси Y.

ax = gca;
ax.XTick = 0:250:500;
ax.YTick = 0:0.25:1;
ax.YLabel.String = [];

Figure contains an axes. The axes with title Magnitude-Squared Coherence contains an object of type line.

Позвоните в Children свойство маркера перемещения для изменения цвета и ширины линии печати.

ln = ax.Children;
ln.Color = [0.8 0 0];
ln.LineWidth = 1.5;

Figure contains an axes. The axes with title Magnitude-Squared Coherence contains an object of type line.

В качестве альтернативы можно использовать set и get для изменения свойств линии.

set(get(gca,'Children'),'Color',[0 0.4 0],'LineStyle','--','LineWidth',1)

Figure contains an axes. The axes with title Magnitude-Squared Coherence contains an object of type line.

Входные аргументы

свернуть все

Входные сигналы, определенные как векторы или матрицы.

Пример: cos(pi/4*(0:159))+randn(1,160) определяет синусоиду, встроенную в белый гауссов шум.

Типы данных: single | double
Поддержка комплексного номера: Да

Окно, указанное как целое число или как вектор строки или столбца. Использовать window для разделения сигнала на сегменты:

  • Если window является целым числом, то mscohere делится x и y в сегменты длины window и окна каждого сегмента с окном Хэмминга такой длины.

  • Если window является вектором, то mscohere делится x и y на сегменты той же длины, что и вектор, и окна каждого сегмента с использованием window.

Если длина x и y не может быть разделен точно на целое число сегментов с noverlap перекрывающиеся выборки, затем сигналы соответственно усекаются.

При указании window как пустые, то mscohere использует окно Хэмминга так, что x и y делятся на восемь сегментов с noverlap перекрывающиеся выборки.

Список доступных окон см. в разделе Windows.

Пример: hann(N+1) и (1-cos(2*pi*(0:N)'/N))/2 оба задают окно Ганна длиной N  + 1.

Типы данных: single | double

Число перекрывающихся выборок, указанное как положительное целое число.

  • Если window является скалярным, то noverlap должно быть меньше, чем window.

  • Если window является вектором, то noverlap должно быть меньше длины window.

При указании noverlap как пустые, то mscohere использует число, которое создает 50% перекрытия между сегментами. Если длина сегмента не указана, функция устанавливает noverlap к ⌊ N/4,5 ⌋, где N - длина входного и выходного сигналов.

Типы данных: double | single

Число точек DFT, указанное как положительное целое число. При указании nfft как пустые, то mscohere задает для этого аргумента значение max (256, 2p), где p = ⌈ log2 N ⌉ для входных сигналов длины N.

Типы данных: single | double

Частота выборки, заданная как положительный скаляр. Частота выборки - это количество выборок в единицу времени. Если единица времени - секунды, то частота дискретизации имеет единицы Гц.

Нормализованные частоты, задаваемые как вектор строки или столбца с по меньшей мере двумя элементами. Нормализованные частоты находятся в диапазоне/выборке.

Пример: w = [pi/4 pi/2]

Типы данных: double

Частоты, задаваемые как вектор строки или столбца с по меньшей мере двумя элементами. Частоты находятся в циклах за единицу времени. Единичное время определяется частотой выборки, fs. Если fs имеет единицы выборок/с, затем f имеет единицы Гц.

Пример: fs = 1000; f = [100 200]

Типы данных: double

Диапазон частот для оценки когерентности в квадрате по величине, указанный как 'onesided', 'twosided', или 'centered'. Значение по умолчанию: 'onesided' для действительных сигналов и 'twosided' для сигналов со сложными значениями.

  • 'onesided' - возвращает одностороннюю оценку квадратичной оценки когерентности между двумя реальными входными сигналами, x и y. Если nfft является четным, cxy имеет nfft/ 2 + 1 строк и вычисляется на интервале [0, δ] рад/выборка. Еслиnfft нечетный, cxy имеетnfft + 1 )/2 строк и интервал равен [0, δ) рад/образец. При указанииfs, соответствующие интервалы равны [0,fs/ 2] циклов/единиц времени для четныхnfft и [0,fs/ 2) циклы/единичное время для нечетныхnfft.

  • 'twosided' - возвращает двустороннюю оценку квадратичной оценки когерентности между двумя реальными или комплексными входными сигналами, x и y. В этом случае cxy имеет nfft и вычисляется по интервалу [0,2δ) рад/выборка. При указании fs, интервал равен [0,fs) циклов/единичного времени.

  • 'centered' - возвращает центрированную двустороннюю оценку квадратичной по величине оценки когерентности между двумя реальными или комплекснозначными входными сигналами; x и y. В этом случае cxy имеет nfft строки и вычисляется по интервалу (-δ, δ] рад/выборка для четныхnfft и (-δ, δ) рад/выборка для нечетныхnfft. При указании fs, соответствующие интервалы (-fs/2, fs/ 2] циклов/единиц времени для четныхnfft и (-fs/2, fs/ 2) циклы/единичное время для нечетныхnfft.

Выходные аргументы

свернуть все

Оценка когерентности в квадрате величины, возвращаемая в виде вектора, матрицы или трехмерного массива.

Нормализованные частоты, возвращаемые в виде вектора столбца с действительным значением.

Частоты, возвращаемые в виде вектора столбца с действительным значением.

Подробнее

свернуть все

Когерентность в квадрате величины

Оценка квадратичной когерентности является функцией частоты со значениями между 0 и 1. Эти значения указывают на то, насколько хорошо x соответствует y на каждой частоте. Квадратичная по величине когерентность является функцией спектральных плотностей мощности, Pxx (f) и Pyy (f), и спектральной плотности поперечной мощности, Pxy (f), изx и y:

Cxy (f) = | Pxy (f) | 2Pxx (f) Pyy (f).

Для систем с множеством входов/множеством выходов функция множественной когерентности становится

CXyi (f) =PXyi (f) PXX−1 (f) PXyi (f) Pyiyi (f) = [Px1yi* (f) ⋯Pxmyi* (f)] [Px1x1 (f) Px1x2 (f) ⋯Px1xm (f) Px2x1 (f) Px2x2 (f) ⋯Px2xm (f)  Pxmx1 (f) Pxmx2 (f) ⋯Pxmxm (f)] −1 [Px1yi (f) ⋮Pxmyi (f)] 1Pyiyi (f)

для i-го выходного сигнала, где:

  • X соответствует массиву m входов.

  • PXyi - m-мерный вектор спектральных плотностей поперечной мощности между входами и yi.

  • PXX является матрицей m-на-m спектральных плотностей мощности и спектральных плотностей поперечной мощности входов.

  • Pyiyi - спектральная плотность мощности выходного сигнала.

  • Кинжал (†) обозначает комплексное сопряженное транспонирование.

Алгоритмы

mscohere оценивает квадратичную по величине функцию когерентности [2] с использованием метода Валча перекрывающейся усредненной периодограммы [3], [5].

Ссылки

[1] Гомес Гонсалес, А., Ж. Родригес, X. Сагарцасу, А. Шумахер и И. Исаса. «Метод множественной когерентности во временной области для анализа путей передачи шума и вибраций нестационарными сигналами». Материалы Международной конференции 2010 года по технике шума и вибрации, ISMA2010-USD2010. стр 3927–3941.

[2] Кей, Стивен М. Современная спектральная оценка. Энглвуд Клиффс, Нью-Джерси: Прентис-Холл, 1988.

[3] Рабинер, Лоуренс Р. и Бернард Голд. Теория и применение цифровой обработки сигналов. Энглвуд Клиффс, Нью-Джерси: Прентис-Холл, 1975.

[4] Стоика, Петре и Рэндольф Мозес. Спектральный анализ сигналов. Река Верхнее Седло, Нью-Джерси: Прентис Холл, 2005.

[5] Уэлч, Питер Д. «Использование быстрого преобразования Фурье для оценки спектров мощности: метод, основанный на усреднении времени по коротким измененным периодограммам». Транзакции IEEE ® по аудио и электроакустике. т. AU-15, 1967, стр. 70-73.

Расширенные возможности

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.
Представлен до R2006a