¿Por qué las funciones externas personalizadas no pueden llamar a datos internos en la programación GUI de MATLAB?
Conocimientos previos
La función tiene su propio espacio de trabajo independiente y cualquier variable utilizada por ella solo puede estar en las siguientes situaciones:
1. variables: el resultado se puede mantener sin cambios durante múltiples llamadas de la función. Debe declararse explícitamente con global o persistente en el cuerpo de la función
2. entre la función y el exterior (excepto los parámetros de entrada y salida, otro medio de intercambio de datos es utilizar variables globales, pero este método generalmente no se recomienda);
3. dos casos son todas variables locales. Las variables locales solo se generan durante una llamada a la función. Una vez que la función regresa, estas variables locales desaparecen.
Análisis de errores
En la función f1 que definiste, los identificadores no son ni del primer ni del segundo tipo, por lo que solo se considerarán variables locales si los identificadores de una variable son; Si no se le asigna un valor antes de su uso, naturalmente se producirá un error de "variable indefinida".
Solución
Hay dos soluciones: una es usar variables globales, pero este enfoque no se recomienda, por lo que no entraré en detalles; la otra es pasar identificadores como; parámetros de entrada para la función, el método específico es:
1 Cambie la definición de la función a
función y=f1(x, handles)
...=f1(..., handles);