Matlab - Como saber la frecuencia que tiene una señal en Matlab

 
Vista:

Como saber la frecuencia que tiene una señal en Matlab

Publicado por Belen (2 intervenciones) el 25/08/2018 17:55:19
Hola buenas tardes, mi duda es para un trabajo de fin de grado que estoy haciendo sobre el diagnostico de la enfermedad de la apnea del sueño.
Con Matlab,necesito conocer en una señal EEG si la frecuencia predominante es 0,1,2,3,4,5...o 30 Hz, para ello lo que estoy haciendo es calcular la Transformada de fourier con fft y despues calcular la potencia, la cosa esque a la hora de visualizarlo si se hacerlo porque defino un vector de frecuencias y represento la potencia en funcion de este vector..Mi duda es que necesito escoger esos valores y nose como hacerlo yo lo estoy haciendo asi;:

1
2
3
4
5
6
7
8
9
10
11
Fs=125;
n=2;%Escogemos el numero de ventana
w=3750;%El numero de muestras que equivalen a 30 segundos 
v=((n-1)*w)+1:1:(n*w);%El intervalo de muestras seleccionado
nfft=256;%el numero de puntos de la fft
Y=fft(x8(v),nfft);%Aqui Y tiene 256 valores
Y = Y(1:nfft/2);%la FFT es simétrica, así que nos quedamos con la mitad de valores
P = (abs(Y)).^2;%calculo de la potencia espectral, módulo alcuadrado de la FFT
f=(0:62.5/127:62.5)
plot(f,P,'r')
xlim([0 30])

Vale mi problema comienza aqui cuando quiero conocer la suma de las treinta primeras potencias, se que haciendo P(1:30) no estoy escogiendo las frecuencias si no el numero de puntos de la fft. ¿Alguien sabria como hacerlo?
1
2
3
4
5
%A continuación se calcula la sumatoria de las frecuencias contenidas en
%las 30 primeras frecuencias
%P tiene una longitud de 128 valores
PT=P(1:30);
PS=sum(PT);
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JESUS DAVID ARIZA ROYETH
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Como saber la frecuencia que tiene una señal en Matlab

Publicado por JESUS DAVID ARIZA ROYETH (1818 intervenciones) el 25/08/2018 18:16:07
https://la.mathworks.com/matlabcentral/answers/160059-finding-the-frequency-value-of-a-signal

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
close all; clear all; clc;
% Assume we capture 8192 samples at 1kHz sample rate
Nsamps = 8192;
fsamp = 1000;
Tsamp = 1/fsamp;
t = (0:Nsamps-1)*Tsamp;
% Assume the noisy signal is exactly 123Hz
fsig = 123;
signal = sin(2*pi*fsig*t);
noise = 1*randn(1,Nsamps);
x = signal + noise;
% Plot time-domain signal
subplot(2,1,1);
plot(t, x);
ylabel('Amplitude'); xlabel('Time (secs)');
axis tight;
title('Noisy Input Signal');
% Choose FFT size and calculate spectrum
Nfft = 1024;
[Pxx,f] = pwelch(x,gausswin(Nfft),Nfft/2,Nfft,fsamp);
% Plot frequency spectrum
subplot(2,1,2);
plot(f,Pxx);
ylabel('PSD'); xlabel('Frequency (Hz)');
grid on;
% Get frequency estimate (spectral peak)
[~,loc] = max(Pxx);
FREQ_ESTIMATE = f(loc)
title(['Frequency estimate = ',num2str(FREQ_ESTIMATE),' Hz']);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como saber la frecuencia que tiene una señal en Matlab

Publicado por Belen Rueda (2 intervenciones) el 26/08/2018 10:52:28
Vale muchas gracias por la aportación , pero mi duda no era esa mi duda es como poder saber la energia que tienen las 30 primeras frecuencias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar