Estoy recibiendo un error cuando se ejecuta código de matlab. Aquí estoy tratando de usar una de las salidas de código anterior como entrada a mi nuevo código.

??? Reference to non-existent field 'y1'.

Alguien me puede ayudar?

4 Comentarios

  1. 3

    Una buena práctica puede ser verificar si el campo existe antes de acceder a ella:

    if isfield( s, 'y1' )
        % s.y1 exists - you may access it
        s.y1
    else
        % s.y1 does not exist - what are you going to do about it?
    end

    A tomar Edric comentario en cuenta, otra forma posible es

    try 
        % access y1
        s.y1
    catch em
        % verify that the error indeed stems from non-existant field
        if strcmp(em.identifier, 'MATLAB:nonExistentField')
             fprintf(1, 'field y1 does not exist...\n');
        else
             throw( em ); % different error - handle by caller?
        end
    end
    • Lamentablemente, es más rápido usar try/catch aquí.
    • Yo no sabía que – gracias!
  2. 1

    Han utilizado el comando carga para cargar datos desde un archivo(s)?
    si sí, esta función sobrescribir las variables actuales, por lo tanto, se vuelven inexistentes, así que cuando usted llama, en lugar de utilizar:

    load ('filename');

    uso:

    f=load ('filename');

    ahora, para referirse a cualquier variable dentro de la carga de archivos de uso f.varname, para
    ejemplo, si hay una red llamada red guardada dentro de la carga de datos se puede utilizar como:

    a = f.net(fv);
  3. 0

    Me gustaría explicar mi situación y, a continuación, dar la solución.

    • Me guardas en una variable op, es un struct , su nombre es coef.mat;
    • Me carga esta variable mediante coef = load( file_path, '-mat');
    • En una nueva función, paso variable coef como un parámetro, en el aquí, el error de Referencia para inexistente campo salga.

    Mi solución:

    • Basta con sustituir coef con coef.op, a continuación, pasar a la función de trabajo.

    Así, creo que la razón detrás de esto es que: el struct se guarda como una variable, cuando se utiliza load y quiere acceso el origen variable, debe señalarlo directamente utilizando dot(.) operación, puede abrir directamente la variable en el espacio de trabajo de Matlab y averiguar de qué se envuelve dentro de la variable.

    En su caso, si su las salidas de código anterior es una estructura(Es mi suposición, pero no ha señalado) y la guardó como MyStruct, se carga como MyInput = load(MyStruct), , a continuación, cuando se utilizan como función del parámetro, debe ser MyInput.y1.

    Lúpulo que iba a funcionar!

  4. 0

    Al principio de la carga en la ventana de comandos y observar la ventana de área de trabajo. Usted puede ver el nombre de la estructura. Se trabajará mediante el acceso a nombre de la estructura. Ejemplo:

    lm=load('data.mat');
    disp(lm.SAMPLE.X);

    Que aquí se MUESTRA es el nombre de la estructura y X es un miembro de la estructura

Dejar respuesta

Please enter your comment!
Please enter your name here