Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Comparar el contenido de frecuencia de dos señales

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

Cargue dos señales sonoras en el espacio de trabajo. Se muestrean a 1 kHz. Calcula sus espectros de poder usando y trazalos uno al lado del otro.periodograma

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)')

Cada señal tiene tres componentes de frecuencia con una energía significativa. Dos de esos componentes parecen estar compartidos. Encuentre 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 encuentran alrededor de 165 y 35 Hz. Puede utilizar para encontrar las frecuencias coincidentes directamente.mscohere Trazar la estimación de coherencia. Encuentra 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])

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

Consulte también

| |

Temas relacionados