
Attempted to acces numel
Publicado por Sinc90 (3 intervenciones) el 05/04/2018 16:53:56
Hola, tengo un problema en mi código que me está comiendo la cabeza y no sé por qué está pasando.
Como veréis más abajo, estoy usando la función findpeaks para encontrar los picos en una señal. Además, a partir de la diferencia entre picos consecutivos, estoy intentando que, si se cumple que el tiempo entre ambos está dentro de 50 ms, se borre el pico de menor amplitud.
El problema aparece cuando intento recorrer el vector diff y comparar los valores de los picos a la vez, ya que por lo visto exceden del tamaño del mismo.
Código:
P.D.: Es posible que el código sea mejorable, es una primera aproximación a lo que quiero conseguir.
Muchas gracias de antemano y cualquier duda sobre el código no olviden en preguntármelo.
Aquí el error:

Como veréis más abajo, estoy usando la función findpeaks para encontrar los picos en una señal. Además, a partir de la diferencia entre picos consecutivos, estoy intentando que, si se cumple que el tiempo entre ambos está dentro de 50 ms, se borre el pico de menor amplitud.
El problema aparece cuando intento recorrer el vector diff y comparar los valores de los picos a la vez, ya que por lo visto exceden del tamaño del mismo.
Código:
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
%% Rechazo de picos adicionales en intervalos de 50ms
T_int = 0.05; % Intervalo de tiempo de 50ms
m_int = round(fs*T_int); % Muestras en 50ms
[pks,locs] = findpeaks(P_t);
diff = diff(locs); % Distancia entre picos consecutivos
e = 0.2; % +/- 0.2. Para hacer coincidir valores de picos cuyos valores son aproximados
inc = 0.1;
for w = 1:length(diff)
if diff(w) <= m_int
if pks(w) < pks(w+1)
pks(w) = [];
locs(w) = [];
else
pks(w+1) = [];
locs(w+1) = [];
end
end
end
x = 0:1/fs*N/2:(length(P_t)-1)*1/fs*N/2;
x_peaks = x(locs);
figure
plot(x,P_t, x_peaks,pks,'pg');
xlim([0,5]);
grid
P.D.: Es posible que el código sea mejorable, es una primera aproximación a lo que quiero conseguir.
Muchas gracias de antemano y cualquier duda sobre el código no olviden en preguntármelo.
Aquí el error:
Valora esta pregunta


0