Matlab - METER EN UN VECTOR Nº POSICIONES DE NUMEROS DE OTRO VECTOR

 
Vista:
Imágen de perfil de Javier

METER EN UN VECTOR Nº POSICIONES DE NUMEROS DE OTRO VECTOR

Publicado por Javier (16 intervenciones) el 11/02/2017 12:24:00
Buenos días a todos:
Estoy haciendo el siguiente problema:

Se pide escribir una función que se llame mi_encuentra, que recibiendo como argumento de entrada un vector v de números enteros y número entero n, devuelva el número de veces m que se encuentra el número contenido en el vector y un vector w con las componentes donde se encuentra.
Ej:
v=[1 3 -1 5 3 ] ,n=3, mi_encuentra(v,n) debe devolver m=2,w= [2,5 ].

El programa que he realizado es el siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
function [m,w] = mi_encuentra(v,n)
l=5;    %Guardamos la longitud del vector "v" en "l" (creo que esto deberia hacerlo de otra manera mejor)
f=[0 0 0 0 0]; %Definimos un vector de frecuencias (de la misma longitud que el vector "v").
%En el siguiente doble "FOR" creamos el vector de frecuencias
for i=1:l
    for j=1:l
       if (v(i)==v(j)) %Comparamos cada término "i"con todos los demás "j" del vector "v"  
           f(i)=f(i)+1; %Si son iguales aumentamos el termino correspondiente 
                        %del vector de frecuencias en una unidad
       end
    end
end
%Metemos en "m" el nº de veces que se repite "n"
for i=1:l
    if (v(i)==n)    %Si el nº que buscamos "n" esta en algun lugar del vector "v"
        m=f(i);     %Metemos las veces que se repite dicho nº en "m" (A traves del vector de frecuencias)
    end
end
%Buscamos la posicion/es donde se encuentra el nº "n" que buscamos
for i=1:l
    if (v(i)==n)    %Si el nº buscado es igual al que esta en la posicion "v(i)"     
        w=i; %Lo meto en el vector "w"   
    end
end

Y los resultados que me arroja cuando llamo a la función son los siguiente:

1
2
3
4
5
6
7
8
9
10
>> [m,w] = mi_encuentra(v,n)
 
m =
 
     2
 
 
w =
 
     5

El resultado de "m" está bien pero el de "w" no.

¿Puede ayudarme alguien?
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
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

METER EN UN VECTOR Nº POSICIONES DE NUMEROS DE OTRO VECTOR

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 12/02/2017 02:43:54
1
2
3
4
5
6
7
8
%Buscamos la posicion/es donde se encuentra el nº "n" que buscamos
k=1;
for i=1:l
    if (v(i)==n)    %Si el nº buscado es igual al que esta en la posicion "v(i)"     
        w(k)=i; %Lo meto en el vector "w"   
        k=k+1;
    end
end

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
>> v=[1 3 -1 5 3 ] ,n=3, [m,w]=mi_encuentra(v,n)
 
v =
 
     1     3    -1     5     3
 
 
n =
 
     3
 
 
m =
 
     2
 
 
w =
 
     2     5


Saludos.
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Servicios de programación matlab


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
0
Comentar
Imágen de perfil de Javier López

METER EN UN VECTOR Nº POSICIONES DE NUMEROS DE OTRO VECTOR

Publicado por Javier López (16 intervenciones) el 12/02/2017 12:47:29
Muchisimas gracias.
Me ha servido de gran ayuda.
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