Matlab - Subscript indices must either be real positive integers or logicals.

 
Vista:
sin imagen de perfil

Subscript indices must either be real positive integers or logicals.

Publicado por Antonio (1 intervención) el 06/01/2017 14:09:54
Captura-de-pantalla-140

Hola buenas tardes. Estoy intentando hacer el ejercicio 3 de la imagen adjunta. El problema que tengo es que me salta el error "Subscript indices must either be real positive integers or logicals." en la LINEA 21. Como no tengo mucha experiencia en matlab, pues el error me ha dejado un poco perdido. ¿Me podéis ayudar para ver que pasa?

Muchas gracias

PD: El código está también en una imagen adjunta y en .rar adjunto.
Captura-de-pantalla-141
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 JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Subscript indices must either be real positive integers or logicals.

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 06/01/2017 15:12:42
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
30
31
32
33
34
35
36
function S = valles(M)
%    M=[5  5  7  8   3   1; 5  8  4  9   8   3;5  7  9  6   1   7;2  1  7   3  4   6;2  4  5   1  6   9]
 if(nargin==0)
     error('Ningun valor de entrada detectado')
end
[f,c]=size(M);
for i=1:f
    for j=1:c
        if(M(i,j)>9 || M(i,j)<1 || floor(M(i,j))~=M(i,j))
            error('La matriz contiene numeros no válidos')
        end
    end
end
if(c<=2 || f<=2)
    S=[];
end
a=1;
b=1;
for i=1:f-1
    for j=1:c-1
        if((i>1 && j>1))
            if(M(i,j)<M(i-1,j) && M(i,j)<M(i+1,j) && M(i,j)<M(i,j+1) && M(i,j)<M(i,j-1) && M(i,j)<M(i-1,j-1) && M(i,j)<M(i+1,j+1))
                v(a)=i;
                d(b)=j;
                a=a+1;
                b=b+1;
            end
        end
    end
end
S=ones(length(v),2);
for i=1:length(v)
    S(i,1)=v(i);
    S(i,2)=d(i);
end
end


1
2
3
4
5
6
7
8
>> M=[5  5  7  8   3   1; 5  8  4  9   8   3;5  7  9  6   1   7;2  1  7   3  4   6;2  4  5   1  6   9];
>> S = valles(M)
 
S =
 
     2     3
     3     5
     4     2


Saludos.
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
programador en matlab
Servicios de programación matlab
[email protected]


http://matlabcaballero.blogspot.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar