Anuncio

Colapsar
No hay ningún anuncio todavía.

Cambiar nombre de variabless en un bucle

Colapsar
X
 
  • Filtro
  • Hora
  • Mostrar
Borrar todo
nuevos mensajes

  • Matlab Cambiar nombre de variabless en un bucle

    Hola!
    Estoy haciendo mi trabajo de fin de grado y necesito un poco de ayuda con la programación en Matlab, ya que acabo de empezar. Concretamente me gustaría saber como crear variables cuyo nombre vaya cambiando en un bucle. Por ejemplo, en el siguiente bucle

    for i:10
    x_i=i
    end

    tendría que obtener diez variables tales que
    x_1=1
    x_2=2
    ...
    x_10=10

    Alguien me podría ayudar, por favor? (:

    Muchas gracias por el tiempo invertido!!

  • #2
    Re: Cambiar nombre de variabless en un bucle

    Para eso se usan arrays, tienes que usar, por ejemplo algo como esto

    for i=1:10
    x(i) = i;
    end

    O como esto:

    x = 1:10;

    Recuerda que los índices empiezan en 1, no en 0 como en otros lenguajes, de modo que si quieres incluir el 0 tendrás que hacer x=0:10; o

    for i=0:10
    x(i+1) = i;
    end
    Eppur si muove

    Comentario


    • #3
      Re: Cambiar nombre de variabless en un bucle

      Ya había pensado en arrays pero yo necesito que las variables x1, x2,... ya sean arrays... Por eso quería nombrarlas diferente.

      Comentario


      • #4
        Re: Cambiar nombre de variabless en un bucle

        Yo le añadiría un índice con algo así como

        for i=1:10
        x(i,1) = i;
        x(i,2) = i*2;
        end
        Eppur si muove

        Comentario


        • #5
          Re: Cambiar nombre de variabless en un bucle

          Pero x(i,j) se refiere al elemento ij de la matriz x, no? A mi me gustaría tener matrices diferentes porque luego quiero usar los datos que ponga en las matrices... Esto no se puede hacer?

          Comentario


          • #6
            Re: Cambiar nombre de variabless en un bucle

            Asignar un nombre a una variable a partir de otra me temo que no se puede, tienes que usar matrices con un índice adicional.
            Eppur si muove

            Comentario


            • #7
              Re: Cambiar nombre de variabless en un bucle

              Vale, gracias! Probaré así entonces (:

              Comentario


              • #8
                Re: Cambiar nombre de variabless en un bucle

                Escrito por Nothing to kill or die for Ver mensaje
                Ya había pensado en arrays pero yo necesito que las variables x1, x2,... ya sean arrays... Por eso quería nombrarlas diferente.
                Los arrays x1, x2... poseen la misma dimensión?, porque si es así, pueden ser filas (o columnas) de una matriz a la cuál podes acceder mediante X(1,: ), X(2,: ). Si no son de la misma dimensión pero tienen todos una cota superior, podes generar una matriz de ceros con el array de mayor dimensión para alocar memoria y trabajar de la misma forma:

                Si todos poseen la misma dimensión:

                Código:
                >> X=[2,3,4;5,6,7;8,9,10]
                
                
                X =
                
                
                     2     3     4
                     5     6     7
                     8     9    10
                
                
                >> X(1,:)
                
                
                ans =
                
                
                     2     3     4
                
                
                >> X(2,:)
                
                
                ans =
                
                
                     5     6     7
                
                
                >> X(3,:)
                
                
                ans =
                
                
                     8     9    10
                Un abrazo.-

                Comentario


                • #9
                  Re: Cambiar nombre de variabless en un bucle

                  Claro, de hecho si tienes una función 'mifuncion()' que te devuelve una matriz puedes hacer

                  Código:
                  for i=1:10
                  x(i,:,:) = mifuncion(i);
                  end
                  Última edición por teclado; 21/07/2014, 10:46:35.
                  Eppur si muove

                  Comentario

                  Contenido relacionado

                  Colapsar

                  Trabajando...
                  X