Matlab - ¿Cómo puedo solucionar el error “Subscript indices must either be real positive integers or logicals

 
Vista:
sin imagen de perfil

¿Cómo puedo solucionar el error “Subscript indices must either be real positive integers or logicals

Publicado por Maria (12 intervenciones) el 25/04/2017 13:01:11
Tengo la siguiente función:

function[ind]=indices_clima(YY,var,valor);
b=sum(var>=valor,2); %busca los valores mayores o iguales a un valor dado
a=YY((b));
m=unique(a);

for n=1:length(m)
ind(n)=length( find(b==m(n)));
end

ind=ind';
La creé para encontrar valores mayores o iguales a un determinado valor en las filas de una matrix (529x31) y crease un vector que los agrupase por año (YY).

El problema es que en determinadas filas los valores son menores al buscado y me da 0, el cual matlab no considera un valor real, o positivo o lógico y por lo tanto no me permite indexar el vector años(YY), con el vector creado (b).

Me da el error:

Subscript indices must either be real positive integers or logicals
¿Cómo podría modificar (b) para poder indexarlo con el otro vector?
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

¿Cómo puedo solucionar el error “Subscript indices must either be real positive integers or logicals

Publicado por JESUS DAVID ARIZA ROYETH (1818 intervenciones) el 25/04/2017 21:51:32
eso depende de tu necesidad, estas sumando valores lógicos y no puedes acceder al valor cero de una matriz o un vector, te recomiendo que YY tenga un valor más para que a tus valores les sumes 1 , sería algo como a=YY((b+1)); aunque no se ve claro la aplicación que le quieres dar
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
sin imagen de perfil

¿Cómo puedo solucionar el error “Subscript indices must either be real positive integers or logicals

Publicado por Maria (12 intervenciones) el 26/04/2017 11:59:38
lo que quiero hacer es contar los días en que la variable es mayor o igual a un determinado valor y agruparlos por año, pero al tratarse de una matriz no se como hacerlo.
cuando uso la forma b=sum(var>=valor,2) si aparece el vector con los días en los que la variable es >= al valor dado, pero al hacer YY((b+1)). Solo me aparecen ciertos años y de forma desordenada,
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
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

¿Cómo puedo solucionar el error “Subscript indices must either be real positive integers or logicals

Publicado por JESUS DAVID ARIZA ROYETH (1818 intervenciones) el 26/04/2017 16:39:21
te voy a colocar un ejemplo, en este caso V va a ser mi matriz que la voy a generar aleatoriamente :

1
2
[a,b]=meshgrid(2010:2017,1:12);
V=[reshape(a,[],1) reshape(b,[],1),randi([1,20],numel(a),1)];

esta matriz la primera columna son años, la segunda son los meses y la tercera el valor de una variable cualquiera

entonces yo quiero sumar cuantas veces fue mayor o igual a 10 la variable en cada año y agruparla :

1
2
3
4
5
6
conteo=zeros(size(years));
for k=1:length(years)
    conteo(k)=sum(and(V(:,1)==years(k),V(:,3)>=10));
end
agrupar=[years conteo];
disp(agrupar)

saludos
https://www.facebook.com/royethmatlab/
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