Selector de elementos para realizar calculos de una matriz
Publicado por Diegox (20 intervenciones) el 26/10/2011 00:22:29
Bueno aca traigo otra pregunta medio complicada pero voy a tratar de hacerla lo mejor explicito posible tengo una matriz de busqueda por asi llamarla seria esta:
I J K NI NJ NK EI EJ EK
3 1 0 3762,796 3640,16 0 1043,335 2321,21 0
4 1 0 2478,36 3640,16 0 1258,25 2321,21 0
3 2 0 3762,796 3002,38 0 1043,335 2224,38 0
4 2 0 2478,36 3002,38 0 1258,25 2224,38 0
Como pueden ver trabajo con coordenadas bajo los id I J K tenemos los norte y los estes de cada punto acomodados de igual forma que sus id...
bien con esta info ocupo llegar a lo siguiente:
I J k N1 E1 N2 E2
3 1 0 -0,0955 0,9954 0,0000 0,0000
4 1 0 0,7378 0,6750 0,0000 0,0000
3 2 0 0,0000 0,0000 -0,5413 0,8408
4 2 0 0,0000 0,0000 0,4768 0,8790
Volvi a poner los id para que se entienda un poco mejor y el nombre de cada columna para no perder la idea de lo que se hace. La matriz expuesta anteriormente es la meta de lo que quiero hacer tomando en cuenta los datos de la matriz de busqueda.
Cada valor tiene una funcion para sacarlo basicamente son 4 funciones Ni, Nj, Ei, Ej o si no solo pone 0.
Para este caso los puntos que se evaluan son el 1 y 2 si estos puntos no aparecen en los id I J K se pone un 0.
Estas serian las funciones:
Ni: -1*((njdis(it,1)-(nidis(it,1)))/sqrt((njdis(it,1)-nidis(it,1))^2+(ejdis(it,1)-eidis(it,1))^2))
Nj: ((njdis(it,1)-(nidis(it,1)))/sqrt((njdis(it,1)-nidis(it,1))^2+(ejdis(it,1)-eidis(it,1))^2))
Ei:-1*((ejdis(it,1)-(eidis(it,1)))/sqrt((njdis(it,1)-nidis(it,1))^2+(ejdis(it,1)-eidis(it,1))^2))
Ej: ((ejdis(it,1)-(eidis(it,1)))/sqrt((njdis(it,1)-nidis(it,1))^2+(ejdis(it,1)-eidis(it,1))^2))
it*: es un contador que hice para saber q numero esta evaluando de la matriz pero no funciona mas adelante mostrare el codigo de lo poco que he logrado.
Para este caso it es: it=1:ndis ndis=4 la idea es hacer it= (1 2 3 4) como si fuera un vector.
Donde nidis, njdis, eidis, ejdis son simplemente la matriz fragmentada por columnas
Voy a ponerlas para entender mejor:
nidis=
3762.80
2478.36
3762.80
2478.36
njdis=
3640.16
3640.16
3002.38
3002.38
eidis=
1043.34
1258.25
1043.34
1258.25
ejdis=
2321.21
2321.21
2224.38
2224.38
ahora lo que quiero poner para lograr de que me entiendan es cada funcion en la matriz final:
I J k N1 E1 N2 E2
3 1 0 nj ej 0 0
4 1 0 nj ej 0 0
3 2 0 0 0 nj ej
4 2 0 0 0 nj ej
Para este caso en especial solo usa funciones nj o ej pero evidentemente tiene q funcionar con cualquier tipo de informacion.
si me lograron entender hasta aca voy a poner el codigo que he logrado pero aun asi no me arroja resultados muy logicos o mas bien me los da de una extraña forma deben ser los bucles:
for a=1:ptosnue*2
for it=1:ndis
if it==idis(it,1)
matadis(it,a)=-1*((njdis(it,1)-(nidis(it,1)))/sqrt((njdis(it,1)-nidis(it,1))^2+(ejdis(it,1)-eidis(it,1))^2))
elseif it==jdis(it,1)
matadis(it,a)=((njdis(it,1)-(nidis(it,1)))/sqrt((njdis(it,1)-nidis(it,1))^2+(ejdis(it,1)-eidis(it,1))^2))
else
matadis(it,a)=0
end
end
end
no voy a poner los resultador pero prueben para que vean lo que hace este codigo.
ptosnue: para este caso son 2
ndis: como lo dije antes son 4
matadis: es la funcion final osea esta:
-0,0955 0,9954 0,0000 0,0000
0,7378 0,6750 0,0000 0,0000
0,0000 0,0000 -0,5413 0,8408
0,0000 0,0000 0,4768 0,8790
para terminar el idis y jdis son los id separados por columnas de los i j k:
idis=
3.00
4.00
3.00
4.00
jdis=
1.00
1.00
2.00
2.00
el id K no lo uso aca por que no tiene relacion con los coeficientes de distancias, creo q mucha gente me debe entender de este tema ya que tiene relacion con fisica, matrices en 3D (programacion) y topografia ya que esa es mi area de estudio.
Bueno espero q me hallan entendido la idea y de verdad muchas gracias el q me pueda ayudar!
I J K NI NJ NK EI EJ EK
3 1 0 3762,796 3640,16 0 1043,335 2321,21 0
4 1 0 2478,36 3640,16 0 1258,25 2321,21 0
3 2 0 3762,796 3002,38 0 1043,335 2224,38 0
4 2 0 2478,36 3002,38 0 1258,25 2224,38 0
Como pueden ver trabajo con coordenadas bajo los id I J K tenemos los norte y los estes de cada punto acomodados de igual forma que sus id...
bien con esta info ocupo llegar a lo siguiente:
I J k N1 E1 N2 E2
3 1 0 -0,0955 0,9954 0,0000 0,0000
4 1 0 0,7378 0,6750 0,0000 0,0000
3 2 0 0,0000 0,0000 -0,5413 0,8408
4 2 0 0,0000 0,0000 0,4768 0,8790
Volvi a poner los id para que se entienda un poco mejor y el nombre de cada columna para no perder la idea de lo que se hace. La matriz expuesta anteriormente es la meta de lo que quiero hacer tomando en cuenta los datos de la matriz de busqueda.
Cada valor tiene una funcion para sacarlo basicamente son 4 funciones Ni, Nj, Ei, Ej o si no solo pone 0.
Para este caso los puntos que se evaluan son el 1 y 2 si estos puntos no aparecen en los id I J K se pone un 0.
Estas serian las funciones:
Ni: -1*((njdis(it,1)-(nidis(it,1)))/sqrt((njdis(it,1)-nidis(it,1))^2+(ejdis(it,1)-eidis(it,1))^2))
Nj: ((njdis(it,1)-(nidis(it,1)))/sqrt((njdis(it,1)-nidis(it,1))^2+(ejdis(it,1)-eidis(it,1))^2))
Ei:-1*((ejdis(it,1)-(eidis(it,1)))/sqrt((njdis(it,1)-nidis(it,1))^2+(ejdis(it,1)-eidis(it,1))^2))
Ej: ((ejdis(it,1)-(eidis(it,1)))/sqrt((njdis(it,1)-nidis(it,1))^2+(ejdis(it,1)-eidis(it,1))^2))
it*: es un contador que hice para saber q numero esta evaluando de la matriz pero no funciona mas adelante mostrare el codigo de lo poco que he logrado.
Para este caso it es: it=1:ndis ndis=4 la idea es hacer it= (1 2 3 4) como si fuera un vector.
Donde nidis, njdis, eidis, ejdis son simplemente la matriz fragmentada por columnas
Voy a ponerlas para entender mejor:
nidis=
3762.80
2478.36
3762.80
2478.36
njdis=
3640.16
3640.16
3002.38
3002.38
eidis=
1043.34
1258.25
1043.34
1258.25
ejdis=
2321.21
2321.21
2224.38
2224.38
ahora lo que quiero poner para lograr de que me entiendan es cada funcion en la matriz final:
I J k N1 E1 N2 E2
3 1 0 nj ej 0 0
4 1 0 nj ej 0 0
3 2 0 0 0 nj ej
4 2 0 0 0 nj ej
Para este caso en especial solo usa funciones nj o ej pero evidentemente tiene q funcionar con cualquier tipo de informacion.
si me lograron entender hasta aca voy a poner el codigo que he logrado pero aun asi no me arroja resultados muy logicos o mas bien me los da de una extraña forma deben ser los bucles:
for a=1:ptosnue*2
for it=1:ndis
if it==idis(it,1)
matadis(it,a)=-1*((njdis(it,1)-(nidis(it,1)))/sqrt((njdis(it,1)-nidis(it,1))^2+(ejdis(it,1)-eidis(it,1))^2))
elseif it==jdis(it,1)
matadis(it,a)=((njdis(it,1)-(nidis(it,1)))/sqrt((njdis(it,1)-nidis(it,1))^2+(ejdis(it,1)-eidis(it,1))^2))
else
matadis(it,a)=0
end
end
end
no voy a poner los resultador pero prueben para que vean lo que hace este codigo.
ptosnue: para este caso son 2
ndis: como lo dije antes son 4
matadis: es la funcion final osea esta:
-0,0955 0,9954 0,0000 0,0000
0,7378 0,6750 0,0000 0,0000
0,0000 0,0000 -0,5413 0,8408
0,0000 0,0000 0,4768 0,8790
para terminar el idis y jdis son los id separados por columnas de los i j k:
idis=
3.00
4.00
3.00
4.00
jdis=
1.00
1.00
2.00
2.00
el id K no lo uso aca por que no tiene relacion con los coeficientes de distancias, creo q mucha gente me debe entender de este tema ya que tiene relacion con fisica, matrices en 3D (programacion) y topografia ya que esa es mi area de estudio.
Bueno espero q me hallan entendido la idea y de verdad muchas gracias el q me pueda ayudar!
Valora esta pregunta
0