• Martes 30 de Abril de 2024, 02:56

Autor Tema:  Selector de funciones con respecto a unos identificadores  (Leído 1757 veces)

ox-1331

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Selector de funciones con respecto a unos identificadores
« en: Jueves 27 de Octubre de 2011, 06:47 »
0
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 en su norte N1 en el este E1 y despues punto 2 N2 y E2 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 y que valos quiero que evalue:

I   J   k   N1           E1           N2           E2
3   1   0   nj(1)           ej(1)         0          0
4   1   0   nj(1)           ej(1)           0           0
3   2   0   0           0           nj(2)         ej(2)
4   2   0   0           0           nj(2)           ej(2)

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.

como ayuda estra pongo mas ejemplos del i j k y las funciones recurrentes:

I   J   k   N1           E1           N2           E2      N3      E3
3   1   0   nj(1)           ej(1)         0          0      ni(3)      ei(3)
4   1   0   nj(1)           ej(1)           0           0      0      0
3   2   0   0           0           nj(2)         ej(2)      ni(3)      ei(3)
4   2   0   0           0           nj(2)           ej(2)      0      0
3   2   0   0      0      nj(2)      ej(2)      ni(3)      ei(2)
1   3   0   ni(1)      ej(1)      0      0      nj(3)      ej(3)

Para este caso agregue un punto mas el punto 3 por eso esta la columna N3 y E3 y agregue mas identificadores
Como se puede observar si en la i encontramos un 3 significa que en la columa N3 se va a ejecutar la funcion ni(3) y en la columna E3 se va a

ejecutar la funcion ei(3) tal es el caso de la penultima linea de la matriz anterior... por eso en la columna j hay un 2 significa que en N2 se ejecutara la funcion nj(2) y en la E2 se ejecutara ej(2) y por esa misma razon el punto N1 y E1 llevan 0 por q no se logra identificar el punto uno como i o como j... 

en resumen todo depende de como esten acomodados las columnas I J K asi se aplicaran las funciones... osea es como hacer un if, elseif, else...

Voy a abjuntar un bloc de notas con todo este comentario por q veo q no sale bien poniendo una previsualizacion.
Bueno espero q me hallan entendido la idea y de verdad muchas gracias el q me pueda ayudar!

ox-1331

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Re:Selector de funciones con respecto a unos identificadores
« Respuesta #1 en: Jueves 27 de Octubre de 2011, 06:50 »
0
no se por q no me salio bien el bloc de notas pero aca va de nuevo...
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.