variable una how gui definida declaring declarar constantes como asignar matlab global-variables

una - variable no definida en matlab



Declarando una variable global en MATLAB (3)

¿Hay alguna manera de declarar variables globales en MATLAB?

Por favor no respondas con:

global x y z;

Porque también puedo leer los archivos de ayuda .

He declarado una variable global, x , y luego he hecho algo como esto:

function[x] = test() global x; test1(); end

Donde la función test1() se define como:

function test1() x = 5; end

Cuando ejecuto test() , mi salida es x = [] . ¿Hay alguna forma en que pueda hacer que emita x=5 , o lo que sea que defina x para estar en una función separada? En C, esta sería una variable externa, y pensé que convertirla en una variable global debería lograr precisamente eso.


Debe declarar x como una variable global en cada ámbito (es decir, función / área de trabajo) en el que desea que se comparta. Por lo tanto, debe escribir test1 como:

function test1() global x; x = 5; end


Hacer referencia a su comentario sobre gnovice utilizando una variable global puede ser un enfoque para resolver su problema, pero no es un uso común.

En primer lugar, asegúrese de que sus archivos .m sean funciones y no scripts . Los scripts comparten un espacio de trabajo común, por lo que es fácil sobrescribir involuntariamente sus variables. Por el contrario, las funciones tienen su propio alcance.

Use xUnit para generar una prueba de unidad repetible para sus funciones. Al probar cada función involucrada en su programa, rastreará la fuente del error. Al tener su prueba unitaria en su lugar, se pueden verificar más modificaciones de código.


Una posible forma de evitar el desastre global es asignar la variable como appdata . Puede usar las funciones setappdata y getappdata para asignar y recuperar appdata de una ventana de MATLAB. Siempre que una sesión de MATLAB esté activa, existe una ventana denotada por 0 .

>> setappdata(0,''x'',10) % 0 indicates the root MATLAB window

Ahora la variable x no es visible para ningún script o función, pero se puede acceder a ella cuando sea necesario mediante el uso de getappdata .

function test globalX = getappdata(0,''x''); disp(globalX); end x = 10

La buena noticia es que puede asignar cualquier objeto de MATLAB válido a la appdata , solo tenga cuidado con los nombres, utilizando nombres únicos para campos de aplicación como ModelOptimizerOptions lugar de una x , y genérica. Esto también funciona en los ejecutables compilados y el código implementado en el servidor de producción MATLAB.