Matlab - Matlab. Funcion "Find"

   
Vista:

Matlab. Funcion "Find"

Publicado por Sebastian (4 intervenciones) el 28/02/2012 18:25:08
Hola. Reformulo una consulta realizada con anterioridad. Tengo la siguiente matriz H:

0.0340 0.0760 0.0690 -1.5310
0.0350 0.0840 0.0760 0.9972
0.0370 0.0690 0.0700 -0.2700
0.0380 0.0770 0.0700 -1.1308
0.0390 0.0770 0.0760 0.6701
0.0400 0.0700 0.0710 -0.6645
0.0410 0.0710 0.0780 0.1081
0.0420 0.0780 0.0770 1.6873
0.0430 0.0780 0.0890 -0.1334
0.0440 0.0890 0.0950 0.2480
0.0450 0.0770 0.0950 -1.5727
0.0460 0.0950 0.0940 0.1888
0.0470 0.0940 0.0840 1.0565

En principio halle las filas de los elementos de H que cumplen con la siguiente igualdad

H(i,2)=0.0770 ,y ademas H(i,2)=0.078

esto con el siguiente planteo

m=find(H(:,2)==0.077) y n=find(H(:,2)==0.078)

Ahora bien, quisiera saber si con la funcion find puedo hacer lo mismo pero en un solo paso. Es decir, lo que probe sin exito es crear un vercor X=[0.0770;0.0780] y realizar el siguiente planteo

p=find(H(:,2)==X) de tal forma que esperaba que el resultado fuese p=[4;5;8;9]

sin embargo la respuesta es un error de dimension.

Espero se comprenda un poco mas la consulta. A la espera agradezco la colaboracion
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

Matlab. Funcion

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3432 intervenciones) el 28/02/2012 18:41:37
Hola Sebastian.
Nose cuando habras hecho tu pregunta. pero alli tienes la respuesta a tu pregunta.

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
%% http://www.lawebdelprogramador.com/foros/Matlab/1315193-Matlab._Funcion_%22Find%22.html
% Hola. Reformulo una consulta realizada con anterioridad. 
% Tengo la siguiente matriz H:
% 
% 0.0340 0.0760 0.0690 -1.5310
% 0.0350 0.0840 0.0760 0.9972
% 0.0370 0.0690 0.0700 -0.2700
% 0.0380 0.0770 0.0700 -1.1308
% 0.0390 0.0770 0.0760 0.6701
% 0.0400 0.0700 0.0710 -0.6645
% 0.0410 0.0710 0.0780 0.1081
% 0.0420 0.0780 0.0770 1.6873
% 0.0430 0.0780 0.0890 -0.1334
% 0.0440 0.0890 0.0950 0.2480
% 0.0450 0.0770 0.0950 -1.5727
% 0.0460 0.0950 0.0940 0.1888
% 0.0470 0.0940 0.0840 1.0565
% 
% En principio halle las filas de los elementos de H que cumplen con la 
% siguiente igualdad
% 
% H(i,2)=0.0770 ,y ademas H(i,2)=0.078
% 
% esto con el siguiente planteo
% 
% m=find(H(:,2)==0.077) y n=find(H(:,2)==0.078)
% 
% Ahora bien, quisiera saber si con la funcion find puedo hacer lo mismo
% pero en un solo paso. Es decir, lo que probe sin exito es crear un vercor
% X=[0.0770;0.0780] y realizar el siguiente planteo
% 
% p=find(H(:,2)==X) de tal forma que esperaba que el resultado fuese p=[4;5;8;9]
% 
% sin embargo la respuesta es un error de dimension.
% 
% Espero se comprenda un poco mas la consulta. A la espera agradezco la 
% colaboracion
%%
clear all
H=[0.0340 0.0760 0.0690 -1.5310
0.0350 0.0840 0.0760 0.9972
0.0370 0.0690 0.0700 -0.2700
0.0380 0.0770 0.0700 -1.1308
0.0390 0.0770 0.0760 0.6701
0.0400 0.0700 0.0710 -0.6645
0.0410 0.0710 0.0780 0.1081
0.0420 0.0780 0.0770 1.6873
0.0430 0.0780 0.0890 -0.1334
0.0440 0.0890 0.0950 0.2480
0.0450 0.0770 0.0950 -1.5727
0.0460 0.0950 0.0940 0.1888
0.0470 0.0940 0.0840 1.0565];
m=find(H(:,2)==0.077);
n=find(H(:,2)==0.078);
X=[0.0770;0.0780];
p=find(H(:,2)==X(1) | H(:,2)==X(2));
display(p)





1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
EJECUCION
>> find_uso
H =
    0.0340    0.0760    0.0690   -1.5310
    0.0350    0.0840    0.0760    0.9972
    0.0370    0.0690    0.0700   -0.2700
    0.0380    0.0770    0.0700   -1.1308
    0.0390    0.0770    0.0760    0.6701
    0.0400    0.0700    0.0710   -0.6645
    0.0410    0.0710    0.0780    0.1081
    0.0420    0.0780    0.0770    1.6873
    0.0430    0.0780    0.0890   -0.1334
    0.0440    0.0890    0.0950    0.2480
    0.0450    0.0770    0.0950   -1.5727
    0.0460    0.0950    0.0940    0.1888
    0.0470    0.0940    0.0840    1.0565
 
p =
     4
     5
     8
     9
    11


Ayuda en matlab

Saludos.
JOSE JEREMIAS CABALLERO

Servicios de programacion matlab


Asesor de Proyectos con Matlab
programador en matlab
"Detalladar sus preguntas, para recibir respuestas acertadas"
jjcc94@hotmail.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

Matlab. Funcion

Publicado por sebastian (4 intervenciones) el 01/03/2012 14:57:50
Muchas gracias por el aporte,no era muy complicado pero recien comienzo con matlab.
Molesto con una ultima consulta. Existe la posibilidad de diferenciar en ese vector p cuales son resultados referidos a 0.0770 y cuales a 0.0780?

Gracias
Sebastian
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

Matlab. Funcion

Publicado por camilo camilo.garcia.g@gmail.com (52 intervenciones) el 29/02/2012 18:54:12
a mi se me ocurrio lo siguiente. eso si no utilizo la función find:

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
clc
clear all
k=1;
A=[0.0340 0.0760 0.0690 -1.5310
0.0350 0.0840 0.0760 0.9972
0.0370 0.0690 0.0700 -0.2700
0.0380 0.0770 0.0700 -1.1308
0.0390 0.0770 0.0760 0.6701
0.0400 0.0700 0.0710 -0.6645
0.0410 0.0710 0.0780 0.1081
0.0420 0.0780 0.0770 1.6873
0.0430 0.0780 0.0890 -0.1334
0.0440 0.0890 0.0950 0.2480
0.0450 0.0770 0.0950 -1.5727
0.0460 0.0950 0.0940 0.1888
0.0470 0.0940 0.0840 1.0565] % matriz de ejemplo
 
 
 
for i=1:size(A,1)
    for k=1:size(A,2)
        if A(i,k)==0.0770
 
        disp(['0.0770 es igual al elemento A ', num2str(i),',',num2str(k)])
        disp('  ')
        end
    end
end
disp('__________________________________________________________________')
for i=1:size(A,1)
    for k=1:size(A,2)
        if A(i,k)==0.078
 
        disp(['0.078 es igual al elemento A ', num2str(i),',',num2str(k)])
        disp('  ')
        end
    end
end
 
clear i k


ejecución

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
A =
 
        0.034        0.076        0.069       -1.531
        0.035        0.084        0.076       0.9972
        0.037        0.069         0.07        -0.27
        0.038        0.077         0.07      -1.1308
        0.039        0.077        0.076       0.6701
         0.04         0.07        0.071      -0.6645
        0.041        0.071        0.078       0.1081
        0.042        0.078        0.077       1.6873
        0.043        0.078        0.089      -0.1334
        0.044        0.089        0.095        0.248
        0.045        0.077        0.095      -1.5727
        0.046        0.095        0.094       0.1888
        0.047        0.094        0.084       1.0565
 
0.0770 es igual al elemento A 4,2
 
0.0770 es igual al elemento A 5,2
 
0.0770 es igual al elemento A 8,3
 
0.0770 es igual al elemento A 11,2
 
__________________________________________________________________
0.078 es igual al elemento A 7,3
 
0.078 es igual al elemento A 8,2
 
0.078 es igual al elemento A 9,2


saludos
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

Matlab. Funcion

Publicado por Sebastian (4 intervenciones) el 01/03/2012 15:10:51
Gracias por tu colaboracion, aunque un poco mas dificil la lectura para mi que soy principiante. El resultado obtenido no es precisamente el que necesito pero si tal vez es el acertado para un paso mas adelante, en fin. Lo que necesito es unicamente referido a la columna 2.

Gracias
Sebastian
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