Estoy tratando de inicializar una estructura en MATLAB similar a como C código de

typedef struct{
 float x;
 float y;
} Data

Data datapts[100];

De matlab, sé que esto es cómo crear una estructura:

Data = structure('x',0,'y',0)

pero, ¿cómo crear 100 instancias de ella?

O es que esto no se suele hacer en MATLAB? ¿MATLAB prefieren la asignación dinámica cada vez que hay nuevos datos para agregar?

Gracias por toda su ayuda..

InformationsquelleAutor O_O | 2011-12-13

3 Comentarios

  1. 5
    repmat(Data,100,1);

    Puede asignar datos con:

    Data(1).x = 10;
    Data(1).y = 20;
    • ah, entonces usted necesita para utilizar un bucle for…
    • Se corrigió.
    • Agradable.. gracias por enseñarme 🙂
    • No necesita Data = repmat(Data,100,1) para asignar la «respuesta» a una nueva estructura ?
  2. 10

    No sé C, así que no sé cómo el código inicializa la estructura. Sin embargo, tenga en cuenta estas dos posibilidades:

    1. Una estructura matriz data con 100 elementos, cada uno de los cuales tiene dos campos x y y

    Puede inicializar un vacío struct con

    data = struct('x', cell(100,1), 'y', cell(100,1));

    y acceder a cada elemento de la estructura de la matriz como data(1) y cada uno de estos es una estructura. Normalmente, estos se utilizan cuando se tienen varios equivalente «cosas» con el mismo conjunto de propiedades, pero con diferentes valores para cada uno.

    Ejemplo:

    elements = struct(...
        'name',         {'Hydrogen', 'Helium', 'Lithium'},...
        'atomicWeight', {1, 4, 7}, ...
        'symbol',       {'H', 'He', 'Li'});
    
    elements(1)
    ans = 
    
            name: 'Hydrogen'
    atomicWeight: 1
          symbol: 'H'

    Así que usted puede tener acceso a cada individuo estructura para llegar a sus propiedades. Ahora bien, si usted quería anexar un struct array con los próximos 10 elementos a esta lista, usted puede utilizar cat, igual que para las matrices.

    2. Una estructura data con dos campos de x y y, cada uno con 100 elementos

    Puede inicializar esta como

    data = struct('x',zeros(100,1),'y',zeros(100,1));

    y acceder a cada elemento del campo como data.x(1). Esto se utiliza normalmente cuando se tiene una «cosa» con varias propiedades que, posiblemente, puede tener diferentes valores.

    Ejemplo:

    weather=struct('time',{{'6:00','12:00','18:00','24:00'}},...
        'temperature',[23,28,25,21]);

    Una vez que usted entienda los structs y estructura de las matrices, y cómo se usan y indexado, se puede utilizar en más formas complicadas que en el simple ilustración de arriba.

    • 2º ejemplo es básicamente el mismo que la 1ª. Para obtener 1×1 estructura tiene que poner matrices de células en el doble de llaves {{...}}.
    • Ah, sí. Gracias. Lo escribí sin MATLAB, por lo que perdió 🙂
  3. 1

    Además de los otros métodos descritos por @yoda y @Jacob, puede utilizar cell2struct.

Dejar respuesta

Please enter your comment!
Please enter your name here