Matlab - ayuda

 
Vista:
sin imagen de perfil

ayuda

Publicado por alvaro (23 intervenciones) el 03/12/2013 08:28:22
Hola a todos!. Esta es mi primera consulta en este foro, espero me puedan ayudar.

necesito eliminar datos de un vector usando "for" , para crear otro, por ejemplo del vector:
A=[1 2 3 0 5 6 7 0 0 8 9 ]
obtener un nuevo vector sin 0 :
B=[1 2 3 4 5 6 7 8 9]



espero me puedan ayudar!
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
sin imagen de perfil

ayuda

Publicado por alvaro (23 intervenciones) el 04/12/2013 05:26:05
es bastante extenso, pero ya he solucionado la duda.
gracias de todas maneras!

sin embargo me ha surgido otra duda, el tema es que tengo que trabajar con varios excel de datos a través de matlab, sin embargo no se como hacer que el programa que he creado pueda abrir todos los excel de manera automatica... no se si me explico
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 xve

ayuda

Publicado por xve (12 intervenciones) el 04/12/2013 07:17:18
Hola Alvaro, nos podrías mostrar como lo solucionaste?
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

ayuda

Publicado por alvaro (23 intervenciones) el 04/12/2013 07:25:27
al final no use un siclo for, simplemente use algo asi:

B =A(find(A ~= 0));
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: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

ayuda

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 04/12/2013 11:39:23
El detalle es que en tu pregunta tu dices usando el ciclo for. Es decir la forma que haz solucionado no es la respuesta a tu pregunta.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
>> clear all
A=[1 2 3 0 5 6 7 0 0 8 9 ]
k=1;
for i=1:length(A)
    if A(i)~=0
        B(k)=A(i);
        k=k+1;
    end
end
B
 
A =
 
     1     2     3     0     5     6     7     0     0     8     9
 
 
B =
 
     1     2     3     5     6     7     8     9



Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
[email protected]


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
2
Comentar
Imágen de perfil de Dave
Val: 497
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

ayuda

Publicado por Dave (1094 intervenciones) el 07/12/2013 11:47:03
Hola Alvaro;

El find esta por demás,


1
2
3
4
5
6
7
8
9
10
11
>> A = floor(5*rand(1,10))
 
A =
 
     4     0     3     3     4     4     0     0     0     4
 
>> B =A(A ~= 0)
 
B =
 
     4     3     3     4     4     4

Espero que sea de alguna ayuda.

Saludos
Dave Correa
[email protected]
Servicios de Programación Matlab
http://fismatlab.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
sin imagen de perfil

ayuda

Publicado por alvaro (23 intervenciones) el 11/12/2013 03:24:26
Gracias!
y si de ese vector, se quisiera crear nuevos vectores sin esos 0, por ejemplo:

A=[4 0 3 3 4 4 0 0 0 4]

separarlo en los vectores
[4]
[3 3 4 4]
[4]
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 Dave
Val: 497
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

ayuda

Publicado por Dave (1094 intervenciones) el 11/12/2013 12:33:24
Alvaro;

En ese caso te sugiero que crees un programa, el algoritmo sería como sigue:

Primero identifica la posición de los ceros y luego separe los elementos del vector T ó A desde la posición 1 hasta la posición del primer cero, y así sucesivamente hasta llegar al final, recuerda colocar una condición que verifique que las diferencias de las posiciones de los ceros sea mayor a 1.

Espero que sea de alguna ayuda.

Saludos
Dave Correa
[email protected]
Servicios de Programación Matlab
http://fismatlab.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