es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Creando una matriz 2D en IDL a partir de una ecuación.

Estoy tratando de hacer un gráfico de contorno en IDL de una cantidad descrita por una ecuación, que aquí tomaré como x^2 + y.
Para hacer eso, primero necesito crear una matriz 2D (“pxx”).

Siendo un novato, actualmente estoy dando mi primer paso en esta dirección y hasta ahora he estado tratando de hacer que este loop simplificado funcione:

pxx=fltarr(10, 10)

xx = indgen(10)
yy = indgen(10)

foreach k, xx do begin
  pxx[k,<em>]=3</em>k
endforeach

print, pxx

Pero esto parece funcionar solo para la última columna. ¿Algún idea de cómo solucionarlo? ¿Y cómo sugiere que proceda para crear una matriz 2D en espacio para la ecuación anterior?
Gracias de antemano, cualquier ayuda es apreciada.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para solucionar el problema con el bucle foreach dado, podemos transponer el array “pxx” usando la función “transpose”. Esto intercambiará las columnas y filas y nos dará la salida deseada. Aquí está cómo podemos modificar el código:

    pxx=fltarr(10, 10)
    
    xx = indgen(10)
    yy = indgen(10)
    
    foreach k, xx do begin
      pxx[*,k]=3*k   ; Transpone el array usando * después de la coma
    endforeach
    
    print, transpose(pxx)   ; Usa la función transpose para intercambiar filas y columnas
    

    Para crear una matriz 2D en espacio para la ecuación x^2+y, podemos utilizar la función “meshgrid” para crear arrays de coordenadas x e y y luego usar estas para calcular los valores de la función en cada punto. Aquí está cómo podemos hacerlo:

    x = dindgen(11,11) - 5   ; Crea un rango de -5 a 5 para x e y
    y = transpose(x)
    
    xx = x^2   ; Calcula el valor de x^2 en cada punto
    yy = y
    
    pz = xx + yy   ; Calcula el valor de x^2+y en cada punto
    
    ; Grafica el contorno
    contour, pz, /device
    

    Esto debería crear un gráfico de contorno de la función x^2+y en IDL.

Comments are closed.