entender la estructura [x:y] en matlab

No estoy seguro de haber entendido correctamente el siguiente código:

i1=[0:M-1];
c_ind(i1+1)=i1+1;
i1=[0:M-1];
d_ind(i1+1)=i1+1;

¿Tengo razón al suponer que este fragmento de código produce dos vectores? c_ind y d_ind que contienen los números 1, 2, 3, ..., M ?

Muchas gracias por su apreciada ayuda; no estar seguro de esto dificulta el progreso;)

Mejores
- astrifa

preguntado el 03 de mayo de 12 a las 09:05

¿Hay algo que le impida iniciar MATLAB (u Octave, el equivalente gratuito) y simplemente las pruebas ¿esto? -

No tengo MATLAB instalado aquí y pensé que era realmente fácil para alguien que conoce MATLAB... pero tal vez debería obtener Octave, ¡gracias por la pista! -

1 Respuestas

Salida de Octave para este código a continuación. Sí, produce dos vectores, c_ind y d_ind, ambos contando desde 1 a M.

No tengo idea de por qué esto fue escrito de esta manera.

>> M = 4
M =  4
>> i1=[0:M-1]
    c_ind(i1+1)=i1+1
    i1=[0:M-1]
    d_ind(i1+1)=i1+1
i1 =

        0        1        2        3

>> c_ind =

        1        2        3        4

>> i1 =

        0        1        2        3

>> d_ind =

        1        2        3        4

La razón por la que esto realmente funciona es porque la sintaxis array([indices]) = [values] mapea la lista de values en los lugares especificados por indices.

>> myvec2([1,4,7]) = [10,20,30]
myvec2 =

       10        0        0       20        0        0       30

>> myvec(5:7) = [10,20,30]
myvec =

        0        0        0        0       10       20       30

contestado el 03 de mayo de 12 a las 09:05

Y también Matlab comienza a indexar desde 1 a diferencia de muchos idiomas, por lo tanto, si intenta c_ind (i1) debería recibir un error ya que intentará c_ind (0) que no está permitido en Matlab. - Dan

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.