Matlab - Elegir par de valores en una matriz

   
Vista:

Elegir par de valores en una matriz

Publicado por Pablo (8 intervenciones) el 16/05/2013 11:43:12
Hola, mi problema es el siguiente. Tengo una matriz con valores de x e y y necesito escoger el par de valores en que ambos valores esten entre 0 y 1.

Por ejemplo, tengo la matriz A:

A =

0.5000 0.3000
1.5000 -2.6000
2.6000 -1.0000
3.4000 0.6000
2.6000 -6.0000
4.6000 -7.0000

Necesito que matlab me reconozca como valor de x el primer elemento de la primera columna y como valor de y el primer elemento de la segunda columna tambien y que ignore el cuarto elemento de la segunda columna, ya que en ese caso el valor de x no esta en el intervalo.

Debe ser muy sencillo pero no consigo hacerlo, a ver si me podeis ayudar. 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

Elegir par de valores en una matriz

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3440 intervenciones) el 16/05/2013 14:30:40
No debes suponer que tus pregunas son sencillas, pues el termino sencillo es muy relativo,
quizas para una persona que ha estudiado matlab por mas 10 años continuamente sea sencillo, pero para otra persona que recien empieza con matlab o no tenga buena base en los fundamentos de matlab tu pregutna no sea tan sencilla.
Para resolver tu pregunta necesitas, saber indices de una matriz( para poder extraer los elementos de una matriz), la condicional if(para poder comparar los valores de la matriz), un ciclo iterativo (para poder ir comparando los elementos de cada fila) , un valor inicial para x ( para ir comparando con todo los valores de x, para buscar el menor de x) y un valor incial para y (para que ir comparando con todo los valores de y, para buscar el menor de y)

Ademas ten en cuenta que el valor menor debe estar en 0 y 1, razon por la cual en la condicion de if() debes agregar esa condicion.

Bueno asi seria si haces programando tu codigo, claro que tambien se puede hacer de otra forma usando la funcion min(), la funcio find(). En conclusion se puede hacer de varias maneras.

Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
jjcc94@hotmail.com

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
0
Comentar

Elegir par de valores en una matriz

Publicado por Pablo (8 intervenciones) el 16/05/2013 16:04:45
Hola de nuevo, muchas gracias por tu respuesta. Al final creo que lo he podido resolver, lo pongo aqui por si alguien tiene el mismo problema.

A(A>1)=0;
A(A<0)=0;
[r c]=size(A);
n=1;
while n<r
if A(n,1)~=0
if A(n,2)~=0
x=A(n,1)
y=A(n,2)
n=n+1;
else
n=n+1;
end
else
n=n+1;
end
end

Lo que he hecho es primero hacer 0 cualquier valor de la matriz que no estuviera entre 0 y 1 y luego buscar parejas de valores que no tengan ningun 0 mediante if.
De nuevo gracias por la respuesta.
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 JE REMIAS CABALLERO

Elegir par de valores en una matriz

Publicado por JOSE JE REMIAS CABALLERO jjcc94@hotmail.com (3440 intervenciones) el 16/05/2013 22:03:36
1
2
3
4
5
6
clear all
A=3*rand(15,2),
[fila,columna]=find(A(1:end,1)>0 & A(1:end,1)<1 &  A(1:end,2)>0 & A(1:end,2)<1 );
M=A(fila,:),
[suma_minimo,posicion]=min(sum(M,2));
fila_minima=M(posicion,:)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
EJECUCION
>> fila_minima1
 
A =
 
    2.3251    2.0974
    2.7426    2.3888
    2.3477    1.3248
    0.8866    1.3386
    0.4555    1.3970
    2.5437    0.8371
    2.3546    2.0261
    0.8125    2.7110
    0.6834    2.7256
    0.9631    2.2416
    2.4887    0.7815
    2.4665    2.0689
    1.7120    0.3955
    1.7155    0.3705
    0.8581    0.5727
 
 
M =
 
    0.8581    0.5727
 
 
fila_minima =
 
    0.8581    0.5727
 
>> fila_minima1
 
A =
 
    0.4372    1.0951
    1.7551    0.9274
    0.2201    0.3627
    2.4670    2.7473
    2.1687    0.4064
    2.7776    0.9964
    1.4779    2.6924
    1.9646    1.4989
    2.6704    1.8459
    1.6156    1.7494
    0.8466    2.0948
    2.9279    0.0880
    0.1093    1.5836
    0.9787    0.0962
    2.9190    2.4814
 
 
M =
 
    0.2201    0.3627
    0.9787    0.0962
 
 
fila_minima =
 
    0.2201    0.3627
 
>> fila_minima1
 
A =
 
    1.0200    0.4080
    2.5401    2.3667
    0.7382    0.2772
    1.7445    0.7136
    2.8130    0.7309
    0.1434    0.3145
    0.1619    2.5751
    0.0619    2.0946
    2.0444    2.2012
    1.7959    1.9516
    0.3421    1.5488
    2.3887    0.9792
    1.8536    1.9853
    0.2106    0.3527
    0.2078    0.4435
 
 
M =
 
    0.7382    0.2772
    0.1434    0.3145
    0.2106    0.3527
    0.2078    0.4435
 
 
fila_minima =
 
    0.1434    0.3145



Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
jjcc94@hotmail.com

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
0
Comentar