Main Content

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 contains an object of type line. Axes object 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 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