Matlab - duda de comparacion de matrices..

   
Vista:

duda de comparacion de matrices..

Publicado por lucio (3 intervenciones) el 15/03/2011 14:16:16
tendo 3 matrices, una con ciertos datos calculados:

A = [ 8 9 7 4 8
. 8 8 7 9 8
. 8 9 5 7 9
. 7 9 9 5 4 ]

otra con valores maximos que debe de poseer la matriz anterior:

max= [ 12 8 9 7 7
. 6 9 5 9 7
. 8 8 8 8 8
. 9 8 8 7 6 ]

y otra con valores minimos que debe poseer la matriz A

min = [ 6 5 6 6 5
. 4 4 5 4 6
. 6 5 6 6 5
. 5 5 5 6 5]

donde tengo: dos valores de las columnas en la cual tengo que realizar al operacion:

x2= 3
x3= 4

en la cual solamente el valor de esas dos columnas debo de realizar el cambio de los valores minimos y maximo,

mi duda es la siguiente.. quisiera vectorizar la operacion,

for(c=x2:x3)
. for (f=1:4)
. if A(f,c)<=min(f,c)
. A(f,c)=min(f,c);
. else
. if A(f,c)>=max(f,c);
. A(f,c)=max(f,c);
. end
. end
end


Resultado final:

A = [ 8 8 7 6 8
. 8 8 5 9 8
. 8 9 6 7 9
. 7 9 8 6 4 ]


muchas gracias por su atencion de ante mano..
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 CABALLERO

duda de comparacion de matrices..

Publicado por JOSE CABALLERO jjcc94@hotmail.com (3440 intervenciones) el 15/03/2011 17:02:12
hola Lucio, revisé tu programa e hice unos arreglos y ya está arrojando los resultados que buscas.

% tendo 3 matrices, una con ciertos datos calculados:
% A=[8 9 7 4 8 ; 8 8 7 9 8; 8 9 5 7 9; 7 9 9 5 4 ]
% otra con valores máximos que debe de poseer la matriz anterior A:
% minn=[ 6 5 6 6 5;4 4 5 4 6;6 5 6 6 5; 5 5 5 6 5]
%
% y otra con valores mínimos que debe poseer la matriz A
% maxx=[ 12 8 9 7 7; 6 9 5 9 7; 8 8 8 8 8; 9 8 8 7 6 ]

% donde tengo: dos valores de las columnas en la cual tengo que
%realizar al operacion: x2, x3 se refieren a las columna 3 y 4
% x2= 3
% x3= 4
%
% en la cual solamente el valor de esas dos columnas debo de
%realizar el cambio de los valores mínimos y máximos,
% muchas gracias por su atención de antemano....

%INICIO DEL PROGRAMA
clear
A=[8 9 7 4 8 ; 8 8 7 9 8; 8 9 5 7 9; 7 9 9 5 4 ]
minn=[ 6 5 6 6 5;4 4 5 4 6;6 5 6 6 5; 5 5 5 6 5]
maxx=[ 12 8 9 7 7; 6 9 5 9 7; 8 8 8 8 8; 9 8 8 7 6 ]
[fila,col]=size(A);
x2=3; x3=4;
for c=x2:x3
for f=1:fila
if A(f,c)<=minn(f,c)
A(f,c)=minn(f,c);
else
if A(f,c)>=maxx(f,c);
A(f,c)=maxx(f,c);
end
end
end
end
A
%FIN DEL PROGRAMA


EJECUCION DEL PROGRAMA

>> matrizlucio
A =
8 9 7 4 8
8 8 7 9 8
8 9 5 7 9
7 9 9 5 4

minn =
6 5 6 6 5
4 4 5 4 6
6 5 6 6 5
5 5 5 6 5

maxx =
12 8 9 7 7
6 9 5 9 7
8 8 8 8 8
9 8 8 7 6

A =
8 9 7 6 8
8 8 5 9 8
8 9 6 7 9
7 9 8 6 4


saludos: JOSÉ CABALLERO
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

duda de comparacion de matrices..

Publicado por lucio (3 intervenciones) el 15/03/2011 20:16:33
Muchas gracias.. la verdad que no veo mucha diferencia entre lo que tu hiciste y yo que yo propuse, solo hiciste que pueda ser ejecutado en el matlab,, pero lo que pasa es lo siguiente.. yo quiero vectorizar,, o sea,, utilizar librerias de matlab.. esto es mas en lenguaje c, debido a que las matrices que poseo son mas grandes.. 78x24 para ser exacto, entonces preferiria vectorizar.. debido a que, los bucles hacen que el programa sea mas lento, entonces encontre a alguien que al fin entienden un poco de matlab, de mi facultad..(no me dio tiempo de esperar a jorge) y me resolvio de la siguiente manera:

%cargando valores
A=[8 9 7 4 8 ; 8 8 7 9 8; 8 9 5 7 9; 7 9 9 5 4 ];
min=[ 6 5 6 6 5;4 4 5 4 6;6 5 6 6 5; 5 5 5 6 5];
max=[ 12 8 9 7 7; 6 9 5 9 7; 8 8 8 8 8; 9 8 8 7 6];

%definiendo columnas a modificar en matrix A
x2=3; x3=4;

%definiendo un valor para realizar el cambio debido a que las posiciones que da en la
%busqueda son iniciales son iniciales,
x4=x2 - 1;

%buscando valores maximos en "max" que deben cambiarse y poseer la matrix A

[f,c]=find(max(:,x2:x3)<=A(:,x2:x3));

%cambia de acuerdo a la posicion encontradas
A(f,c+x4)=max(f,c+x4);

%encuentra posiciones en la matrix min
[f,c]=find(A(:,x2:x3)<=min(:,x2:x3));

%cambia los valores de acuerdo a la posicion
A2(f,c+x4)=min(f,c+x4);

A =
8 9 7 6 8
8 8 5 9 8
8 9 6 7 9
7 9 8 6 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 JOSE CABALLERO

duda de comparacion de matrices..

Publicado por JOSE CABALLERO jjcc94@hotmail.com (3440 intervenciones) el 15/03/2011 20:23:20
Ah disculpa, entonces no entendi la pregunta bien.
saludos. JOSÉ CABALLERO
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

duda de comparacion de matrices..

Publicado por lucio (3 intervenciones) el 16/03/2011 15:28:12
no te preocupes.. gracias por la ayuda..

pero sigo esperando la respuesta de Jorge.. a ver como el plantea esto..
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