Matlab - Eliminar ceros de un vector

 
Vista:
sin imagen de perfil
Val: 9
Ha aumentado su posición en 10 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Eliminar ceros de un vector

Publicado por Sergio (3 intervenciones) el 03/11/2020 19:25:39
El ejercicio dice:

Haz una función que reciba un vector de entrada y suprima los ceros del vector, reduciendo por lo tanto la dimensión del mismo, y también devuelva el número de ceros. Es decir, tiene que devolver el vector de entrada sin ceros y decir cuántos ceros había. Es importante hacerlo mediante una funcion del tipo [salida]=nombre(entrada)

-Ejemplo:
Vector inicial= [1 5 8 0 5 2 0 2 1 0 0.6 12 0]

Respuesta:
nozeros = 1 5 8 5 2 2 1 0.6 12
numceros = 4
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: 7.541
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Eliminar ceros de un vector

Publicado por JOSE JEREMIAS CABALLERO (5835 intervenciones) el 03/11/2020 19:32:07
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
>> V= [1 5 8 0 5 2 0 2 1 0 0.6 12 0]
V1=V(V~=0)
n=length(V(V==0))
 
V =
 
    1.0000    5.0000    8.0000         0    5.0000    2.0000         0    2.0000    1.0000         0    0.6000   12.0000         0
 
 
V1 =
 
    1.0000    5.0000    8.0000    5.0000    2.0000    2.0000    1.0000    0.6000   12.0000
 
 
n =
 
     4

Puede adaptar a sus necesidades que le están pidiendo .
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
Val: 9
Ha aumentado su posición en 10 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Eliminar ceros de un vector

Publicado por Sergio (3 intervenciones) el 03/11/2020 19:39:56
No, pero debo crear una funcion que haga eso, es decir, no puedo usar una funcion preprogramada de matlab. Algo parecido a la imagen adjuntada pero bien hecho xd. No se como poner en el ELSE que cada vez que pase por ahi, coja el valor y lo guarde, sin guardar los 0.
Captura-de-pantalla-2020-11-03-a-las-19.33.04
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
Val: 7.541
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Eliminar ceros de un vector

Publicado por JOSE JEREMIAS CABALLERO (5835 intervenciones) el 03/11/2020 19:55:08
Podría subir en formato texto lo que ha subido en imagen
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
Val: 9
Ha aumentado su posición en 10 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Eliminar ceros de un vector

Publicado por Sergio (3 intervenciones) el 03/11/2020 20:00:21
1
2
3
4
5
6
7
8
9
10
11
12
13
14
V=[1 5 8 0 5 2 0 2 1 0 0.6 12 0];
[Vsin0 num0]=ex6(V)
 
    function [Vsin0 num0]=ex6(V)
        num0=0;
        for i=1:size(V,2);
            if V(i)==0;
                num0=num0+1;
 
            else
                Vsin0(i)=V(i);
            end
        end
    end


Ahi esta. Lo que quiero en el ELSE es que cada vez que pase por ahi, guarde el valor de V(i), y al final de todo tenga un conjunto de numeros guardados (todos los que no son 0). No consigo hacerlo...
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
Val: 1.059
Bronce
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Eliminar ceros de un vector

Publicado por Daniel (344 intervenciones) el 03/11/2020 20:19:05
Hola,

El problema esta en que hay que añadir los valores que no son cero, no ponerlos en la misma posición.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function [Vsin0, num0] = ex6(V)
 
Vsin0 = [];
num0 = 0;
 
for i=1:size(V,2)
    if V(i) == 0
        num0 = num0 + 1;
    else
        Vsin0 =[Vsin0 V(i)];
    end
end
 
end

Saludos,
Daniel Rodríguez
Analytics Lane
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 7.541
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Eliminar ceros de un vector

Publicado por JOSE JEREMIAS CABALLERO (5835 intervenciones) el 03/11/2020 20:55:13
1
2
3
4
5
6
7
8
9
10
11
12
function [Vsin0 num0]=ex6(V)
num0=0;
k=1;
for i=1:size(V,2)
if V(i)==0
num0=num0+1;
else
Vsin0(k)=V(i);
k=k+1;
end
end
end
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 1.059
Bronce
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Eliminar ceros de un vector

Publicado por Daniel (344 intervenciones) el 03/11/2020 21:03:21
Otra forma es eliminar los ceros

1
2
3
4
5
6
7
8
9
10
11
12
function [V, num0] = ex6(V)
 
num0 = 0;
 
for i = size(V,2):-1:1
    if V(i) == 0
       num0 = num0 + 1;
       V(i) = [];
    end
end
 
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