Matlab - Extracción de datos de igualdad con datos conocidos

 
Vista:
sin imagen de perfil
Val: 21
Ha aumentado su posición en 2 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Extracción de datos de igualdad con datos conocidos

Publicado por Maria (16 intervenciones) el 07/05/2018 18:26:35
Hola a todos!

Me surge la siguiente pregunta:

con qué función de MATLAB o cómo puedo, de una igualdad de la que todas las incognitas son conocidas y a la vez vectores(es decir, varias opciones), extraer los valores que cumplen la igualdad?
Tendría que hacerlo con un "for"?
A modo de ejemplo para que lo entendáis:

q , l y m son vectores
4 < q / (l*m)
extraer qué valores de todos los vectores cumplen la ecuación.


Muchas gracias de antemano!

María
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 JESUS DAVID ARIZA ROYETH
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Extracción de datos de igualdad con datos conocidos

Publicado por JESUS DAVID ARIZA ROYETH (1818 intervenciones) el 07/05/2018 18:37:49
1
2
3
4
5
6
7
q=rand(1,5);
l=rand(1,5);
m=rand(1,5);
condicion=4 < q ./ (l.*m);
q(condicion)
l(condicion)
m(condicion)


condición te va a dar un resultado lógico en cada índice donde se cumpla la condición te va a devolver el valor de 1 y donde no se cumpla te va a resultar un 0, luego para extraer de cada vector el número solo debes hacer q(condicion) y así sucesivamente,
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
Val: 21
Ha aumentado su posición en 2 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Extracción de datos de igualdad con datos conocidos

Publicado por Maria (16 intervenciones) el 07/05/2018 19:01:52
Gracias por tu respuesta.

Lo he probado en un comando "for" y me sale el siguiente fallo. Lo he probado fuera del for también, pero al ser vectores, y al hacer la multiplicación, me dice que los vectores no tienen las mismas dimensiones

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
n1I=0.41
 
for i= 1:nS
    for p=1:nS
        for j = 1:nL
            for k=1:nfck;
                for o =1:nN
                     fcd(k)= 0.85*fck(k)/1.5;
                     n1I < NEd1(o)/(h1(i)*h1(p)*fcd(k));
                     NEd1(n1I);
                     h1(n1I);
                     fcd(n1I);
                end
            end
        end
     end
end

Error:
Subscript indices must either be real positive integers or logicals.

Error in Pendelstuetzef (line 52)
NEd1(n1I);
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
Val: 21
Ha aumentado su posición en 2 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Extracción de datos de igualdad con datos conocidos

Publicado por Maria (16 intervenciones) el 07/05/2018 19:34:09
Me he decidido a hacerlo fuera del for, que creo que es más fácil.

Le he puesto los puntos, para que multiplique por términos (lo acabo de ver, lo siento, soy muy nueva en MATLAB) y me sigue dando error en las dimensiones de la matriz. Todos los vectores tienen la misma dimensión e incluso he probado con el valor (condición) como vector, es decir n1I=[0.41 0 0 0 0 0 0]
y tampoco ha funcionado. De qué podría ser?

n1I < NEd1./(h1.*h1.*fcd);
NEd1(n1I);
h1(n1I);
fcd(n1I);
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 JESUS DAVID ARIZA ROYETH
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Extracción de datos de igualdad con datos conocidos

Publicado por JESUS DAVID ARIZA ROYETH (1818 intervenciones) el 07/05/2018 19:38:46
1
2
3
4
condicion=n1I < NEd1./(h1.*h1.*fcd);
NEd1(condicion);
h1(condicion);
fcd(condicion);
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
Val: 21
Ha aumentado su posición en 2 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Extracción de datos de igualdad con datos conocidos

Publicado por Maria (16 intervenciones) el 07/05/2018 19:46:01
Gracias por el apunte. Lo he hecho como indicas, y aún me sigue dando error en las dimensiones. Tengo que definir "condicion?
Todos los vectores tienen las mismas dimensiones, lo he comprobado.

condicion=n1I < NEd1./(h1.*h1.*fcd);
NEd1(condicion);
h1(condicion);
fcd(condicion);

Matrix dimensions must agree.

Error in Pendelstuetzef (line 70)
condicion=n1I < NEd1./(h1.*h1.*fcd);
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 JESUS DAVID ARIZA ROYETH
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Extracción de datos de igualdad con datos conocidos

Publicado por JESUS DAVID ARIZA ROYETH (1818 intervenciones) el 07/05/2018 20:07:54
si tienen realmente las mismas dimensiones no debería darte problema, adjunta todos tus archivos de tal forma que se pueda ejecutar y así es más fácil ver tus problemas porque el error está diciendo que no tienen las mismas dimensiones
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
Val: 21
Ha aumentado su posición en 2 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Extracción de datos de igualdad con datos conocidos

Publicado por Maria (16 intervenciones) el 07/05/2018 20:24:19
He borrado cosas que tenía y ya ha funcionado. Me ha creado un vector (condicion). Para obtener las tres condiciones a la vez he creado tres condiciones distintas para cada valor.

Muchas gracias!

Así ha quedado

condicionN=n1I < (NEd1/1000)./(h1.*h1.*fcd);
condicionh=n1I < (NEd1/1000)./(h1.*h1.*fcd);
condicionfcd=n1I < (NEd1/1000)./(h1.*h1.*fcd);
NEd1(condicionN);

h1(condicionh);

fcd(condicionfcd);
disp(condicionN);
disp(ans);

Ahora lo que tengo que hacer el identificar las codiciones con los vectores condicion. Tienes una idea de cómo podría hacerlo?
En las soluciones se genera un único vector "ans" sólo para fcd. Cómo podría generar más vectores "ans" para los otros vectores?

Gracias!
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 JESUS DAVID ARIZA ROYETH
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Extracción de datos de igualdad con datos conocidos

Publicado por JESUS DAVID ARIZA ROYETH (1818 intervenciones) el 07/05/2018 21:07:35
solo debes guardar las soluciones

1
2
3
4
5
solucion1=NEd1(condicionN);
 
solucion2=h1(condicionh);
 
solucion3=fcd(condicionfcd);
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
Val: 21
Ha aumentado su posición en 2 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Extracción de datos de igualdad con datos conocidos

Publicado por Maria (16 intervenciones) el 07/05/2018 21:14:22
Genial! Ha funcionado perfectamente.

Muchas gracias!
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