Matlab - Ayuda en un programa

   
Vista:

Ayuda en un programa

Publicado por Jorge (3 intervenciones) el 21/02/2009 00:24:07
Hola. Estaba intentando hacer un programa que me realice lo siguiente:

Tengo el vector siguiente:

[1.1 1.0 0.6 0.7]

La suma de estos elementos 3.4 y quiero que sea 3.0

Quería truncar los numeros de forma que me quedaran [1 1 0 0] con lo cual su suma seria 2.

Luego en funcion de la proximidad al entero superior daría un 1 al 2º cero (correspodiente a 0.7), con lo que me quedaria 1 y la suma de [1 1 0 1] seria ya 3.

Como veis no es simplemente redondear el vector inicial, ya que si fuese asi tendria [1 1 1 1] y su suma sería 4 y no 3 como pretendo.

No se si me explico muy bien. Gracias, Saludos!
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

RE:Ayuda en un programa

Publicado por Kike (304 intervenciones) el 21/02/2009 03:44:40
Lo más fácil que se me ocurre es:
round( sum( [1.1 1.0 0.6 0.7] ) )

Me parece complicado redondear cada elemento.
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

RE:Ayuda en un programa

Publicado por Jorge (3 intervenciones) el 21/02/2009 15:17:52
Gracias por contestarme Kike. Eso no me vale, pero gracias por molestarte. Estaba pensando en hacer otra cosa:

clc

A=[1.1;1.0;0.6;0.7]

B=abs(A-fix(A))

C=flipud(sort(B))

D=sum(fix(C))

for j=1:4
while D<2
E=ceil(C(j))
C(j)=E
D=sum(fix(C))
end
end

El bucle sería:

-Mientras D sea < 2 aproxima cada elemento de C a su entero superiorí:
-Luego actualiza la matriz C y vuelve a crear D.
-Se vuelve a comprobar el bucle.

Creo que lo tengo mal creado porque al ejecutarlo parece ser que es un bucle sin fin porque no para.

Mi intención es que quede así:

A =

1.1000
1.0000
0.6000
0.7000

B =

0.1000
0
0.6000
0.7000

C =

0.7000
0.6000
0.1000
0

D =

0

E =

1

C =

1
0.6000
0.1000
0

D =

1

E =

1

C =

1
1
0.1000
0

D =

2

Por último:

F = fix(C)


Gracias, un saludo
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

RE:Ayuda en un programa

Publicado por Jorge (3 intervenciones) el 21/02/2009 15:51:35
Estoy pensando otra cosa. ¿Sabes si existe algo en Matlab que me diga en que lugar se encuentra un determinado elemento en una matriz?

Sería por ejemplo encontrar donde se encuentra el maximo de un vector:

A=[1.1;1.0;0.6;0.7]

max(A)=(1,1)

o

max(A)=1

Sin el valor del máximo quiero decir.

Gracias. Salu2
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