Matlab - crear una función que acepte matrices

   
Vista:

crear una función que acepte matrices

Publicado por María José (9 intervenciones) el 11/01/2014 21:41:04
Hola
Llevo un par de días intentando sacar esta función pero no me sale de ninguna manera si me pueden ayudar.

"Implemente una función llamada analizaMatriz que acepte como entrada una matriz de poblaciones de
tamaño cualquiera. La función devolverá el número de elementos que valen cero, el numero de elementos
que valen entre cero y uno y el número de elementos que valen más de uno"

Gracias
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

crear una función que acepte matrices

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3441 intervenciones) el 11/01/2014 22:43:13
Según dices, llevas dos días intentando sacar esa función, entonces cual seria el avance que tienes.
además quieres hacerlo usando comandos de matlab o haciendo un programa cuya lógica tu mismo lo hayas hecho.
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

crear una función que acepte matrices

Publicado por María José (9 intervenciones) el 11/01/2014 22:53:36
esto es lo que he intentado que me funcione pero siempre me da algún error

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function [num_0,num_entre0_1,num_mayor1]=analizaMatriz (matriz)
cont=0;
cuenta=0;
contador=0;
for i=1:size(matriz)
    if matriz(i)==0
        cont=cont+1;
    elseif matriz(i)>0 && matriz(i)<=1
        cuenta=cuenta+1;
    else matriz(i)>1
        contador=contador+1;
    end
end
num_0=cont;
num_entre0_1=cuenta
num_mayor1=contador
end
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 JOSE JEREMIAS CABALLERO

crear una función que acepte matrices

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3441 intervenciones) el 11/01/2014 23:06:24
Tienes que usar dos bucles, uno para recorra la filas y el otro para recorra la columnas, y los bucles tienen que estar concatenados.
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

crear una función que acepte matrices

Publicado por María José (9 intervenciones) el 11/01/2014 23:12:57
si lo pongo así me sale también error cuando le meto la matriz solo le puedo meter los valores de uno en uno no me deja una matriz y no me hace el bucle, es que ya nose en lo que fallo...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function [num_0,num_entre0_1,num_mayor1]=analizaMatriz (matriz)
cont=0;
cuenta=0;
contador=0;
for i=1:size(matriz)
     for j=1:i
         if matriz(i,j)==0
             cont=cont+1;
         elseif matriz(i,j)>0 && matriz(i)<=1
             cuenta=cuenta+1;
         else matriz(i,j)>1
             contador=contador+1;
         end
     end
 end
num_0=cont;
num_entre0_1=cuenta
num_mayor1=contador
end
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 JOSE JEREMIAS CABALLERO

crear una función que acepte matrices

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3441 intervenciones) el 11/01/2014 23:16:48
estudia como funciona el comando size(). ¿ ademas como ejecuta tu código.?. ¿Por qué el segundo for solo recorre hasta i?.
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

crear una función que acepte matrices

Publicado por María José (9 intervenciones) el 11/01/2014 23:38:03
el size es porque solo conozco eso y length, es que ahora tengo tambien el problema de que no me deja meter mas de un valor y tengo que meter una matriz de 5x5 entonces tampoco se si funciona y como solucion me siguen saliendo cosas raras
¿que tengo que cambiar?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function [num_0,num_entre0_1,num_mayor1]=analizaMatriz (matriz)
cont=0;
cuenta=0;
contador=0;
for i=1:size(matriz)
    for j=1:size(matriz)
        if matriz(i,j)==0
            cont=cont+1;
        elseif matriz(i,j)>0 && matriz(i)<=1
            cuenta=cuenta+1;
        else matriz(i,j)>1
            contador=contador+1;
        end
    end
end
num_0=cont;
num_entre0_1=cuenta;
num_mayor1=contador;
end
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 JOSE JEREMIAS CABALLERO

crear una función que acepte matrices

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3441 intervenciones) el 11/01/2014 23:40:35
¿ como ejecutas tu código?. ¿matriz(i)<=1?
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

crear una función que acepte matrices

Publicado por María José (9 intervenciones) el 11/01/2014 23:43:07
matriz(i)<=1 es para me someta al condicional menor o igual que 1 el valor que hay en la posicion i de la matriz
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 JOSE JEREMIAS CABALLERO

crear una función que acepte matrices

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3441 intervenciones) el 11/01/2014 23:44:05
se mas especifico.
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

crear una función que acepte matrices

Publicado por María José (9 intervenciones) el 11/01/2014 23:56:25
nose es que asi es como me lo han explicado
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 JOSE JEREMIAS CABALLERO

crear una función que acepte matrices

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3441 intervenciones) el 12/01/2014 00:00:39
exactamente que es lo pones cuando ejecutas el código en la ventana de comandos, a eso me refiero.

Un ejemplo en concreto, una matriz en concreto, además que error sale en la ventana de comandos.
¿porque matriz(i,j)>0 y porque matriz(i)<=1 ?
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

crear una función que acepte matrices

Publicado por María José (9 intervenciones) el 12/01/2014 00:02:18
se me ha pasado poner también la j en el matriz(i)<=1
la matriz que quiero usar es esta:
[0,0,0,5.45,61.9;0.675,0.703,0,0,0;0,0.047,0.767,0,0;0,0,0.022,0.765,0;0,0,0,0.068,0.876]
y de error me aparece: Too many input arguments.
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 JOSE JEREMIAS CABALLERO

crear una función que acepte matrices

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3441 intervenciones) el 12/01/2014 00:15:55
esta es la ultima pregunta que te hago. Como ejecutas exactamente, que es lo pones al momento ejecutar, mejor dicho que es lo escribes en la ventana de comandos de matlab, y que error sale, copia justamente lo que haces en el ventana de comandos.
Te estoy preguntando y no eres claro en tus respuestas.
Ademas estudia size(), no estas usando adecuadamente.
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

crear una función que acepte matrices

Publicado por María José (9 intervenciones) el 12/01/2014 00:24:54
esto es lo que hago:
>> analizaMatriz 0 0 0 5.45 61.9 0.675 0.703 0 0 0 0 0.047 0.767 0 0 0 0 0.022 0.765 0 0 0 0 0.068 0.876
??? Error using ==> analizaMatriz
Too many input arguments.

el size te da el numero de lineas y columnas que tiene una matriz.¿entonces que uso para recorrer la matriz?'
¿y por que no me deja en la ventana de comandos meter una matriz con sus ; para diferenciar las diferentes filas?
¿tengo que meter los valores todos sin comas ni punto y coma ?

P.D:perdon por no saber contestar bien a lo que me esta respondiendo
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 JOSE JEREMIAS CABALLERO

crear una función que acepte matrices

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3441 intervenciones) el 12/01/2014 00:42:46
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function [num_0,num_entre0_1,num_mayor1]=analizaMatriz (matriz)
 cont=0;
 cuenta=0;
 contador=0;
 for i=1:size(matriz,1)
    for j=1:size(matriz,2)
        if matriz(i,j)==0
            cont=cont+1;
        elseif matriz(i,j)>0 && matriz(i,j)<=1
            cuenta=cuenta+1;
        elseif matriz(i,j)>1
             contador=contador+1;
        end
    end
 end
 num_0=cont;
 num_entre0_1=cuenta;
 num_mayor1=contador;
 end



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
>> A
 
A =
 
     4     4     4     2     2
     4     0     3     2     2
     2     1     2     4     3
     3     0     5     4     4
     1     0     0     1     4
 
>> [num_0,num_entre0_1,num_mayor1]=analizaMatriz([4 4 4 2 2; 4 0 3 2 2; 2 1 2 4 3; 3 0 5 4 4; 1 0  0 1 4])
 
num_0 =
 
     4
 
 
num_entre0_1 =
 
     3
 
 
num_mayor1 =
 
    18



Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
jjcc94@hotmail.com


http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
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

crear una función que acepte matrices

Publicado por María José (9 intervenciones) el 12/01/2014 00:48:55
muchas Gracias
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