Main Content

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