Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

Comparar el contenido frecuencial de dos señales

La coherencia espectral ayuda a identificar la similitud entre señales en el dominio de la frecuencia. Los valores más grandes indican componentes de frecuencia comunes a las señales.

Cargue dos señales de sonido en el espacio de trabajo. Se muestrean a 1 kHz. Calcule sus respectivos espectros de potencia utilizando periodogram y represéntelos el uno al lado del otro.

load relatedsig

Fs = FsSig;

[P1,f1] = periodogram(sig1,[],[],Fs,'power');
[P2,f2] = periodogram(sig2,[],[],Fs,'power');

subplot(2,1,1)
plot(f1,P1,'k')
grid
ylabel('P_1')
title('Power Spectrum')

subplot(2,1,2)
plot(f2,P2,'r')
grid
ylabel('P_2')
xlabel('Frequency (Hz)')

Figure contains 2 axes objects. Axes object 1 with title Power Spectrum, ylabel P_1 contains an object of type line. Axes object 2 with xlabel Frequency (Hz), ylabel P_2 contains an object of type line.

Cada señal tiene tres componentes de frecuencia con energía significativa. Dos de esos componentes parecen ser compartidos. Busque las frecuencias correspondientes utilizando findpeaks.

[pk1,lc1] = findpeaks(P1,'SortStr','descend','NPeaks',3);
P1peakFreqs = f1(lc1)
P1peakFreqs = 3×1

  165.0391
   35.1562
   94.7266

[pk2,lc2] = findpeaks(P2,'SortStr','descend','NPeaks',3);
P2peakFreqs = f2(lc2)
P2peakFreqs = 3×1

  165.0391
   35.1562
  134.7656

Los componentes comunes se sitúan en torno a 165 y 35 Hz. Puede utilizar mscohere para encontrar las frecuencias coincidentes directamente. Represente la estimación de la coherencia. Busque los picos por encima de un umbral de 0,75.

[Cxy,f] = mscohere(sig1,sig2,[],[],[],Fs);

thresh = 0.75;
[pks,locs] = findpeaks(Cxy,'MinPeakHeight',thresh);
MatchingFreqs = f(locs)
MatchingFreqs = 2×1

   35.1562
  164.0625

figure
plot(f,Cxy)
ax = gca;
grid
xlabel('Frequency (Hz)')
title('Coherence Estimate')
ax.XTick = MatchingFreqs;
ax.YTick = thresh;
axis([0 200 0 1])

Figure contains an axes object. The axes object with title Coherence Estimate, xlabel Frequency (Hz) contains an object of type line.

Se obtienen los mismos valores que antes. Se puede encontrar el contenido frecuencial común a dos señales sin estudiar las dos señales por separado.

Consulte también

| |

Temas relacionados