Hola chicos, estoy tratando de crear un script de matlab (archivo m) que será controlado por un script de VBA externo.Controlar un script de matlab (Pausa, Restablecer)
El script de matlab debe hacer la misma operación cada vez (incluso los parámetros cambian, pero este no es el caso en este caso) para un cierto número de bucles. Si lo veo bien, puede utilizar MATLAB Funktions en VBA así: http://www.mathworks.de/help/techdoc/matlab_external/f135590.html#f133975
Mi principal problema es cómo implementar la parte de MATLAB de este problema ... en el momento en que mi parte de control es el siguiente:
start.m:
run = 1;
reset = 0;
while run ~= 0 % Loop until external reset of 'run' to '0'
if reset ~= 0
doReset(); % Reset the parameters for the processing
reset = 0;
disp('I did a reset');
end
disp('I am processing');
doProcess();
pause(1)
end
disp('I am done');
la parte reinicio funciona muy bien mientras se cambia el valor por el guión, pero cuando intento manualmente para cambiar el valor de 'correr' o 'reset' a cualquier otro valor en mi espacio de trabajo, no pasa nada ... mi secuencia de comandos no aborta, tampoco lo hace la re set-if do it's work ... me parece que el script no reconoce ningún cambio en el espacio de trabajo ?!
después, las variables 'ejecutar' y 'restablecer' se establecerán o desactivarán mediante el script de VBA. ¿Hay alguna razón plausible por la que no pueda abortar el bucle a mano?
¡Gracias por cualquier consejo!
saluda, poeschlorn
Editar:
Parece que el script carga las variables una vez antes de comenzar de nuevo y nunca en tiempo de ejecución ... ¿existe la posibilidad de tener acceso a una variable explícita espacio de trabajo ?
Edición 2:
uso de Matlab 2010b sin cajas de herramientas adicionales en el momento
Datos 3:
descubrí, que hay varios 'espacios de trabajo' o RAM en Matlab. Si mi función se está ejecutando, las variables se almacenan en el espacio de trabajo 'base' (?), Que no es el espacio de trabajo de matlab en el que puede hacer clic y cambiar cada valor. De modo que tengo que acceder a este siniestro espacio 'base' y cambiar la bandera 'ejecutar' a cero. ¿Algunas ideas?
r.e. Edición 3: No hay nada siniestro, las funciones tienen su propia pila de variables y el área de trabajo otra (¡no quiere que una función de usuario cambie sus variables de espacio de trabajo y viceversa!). Si necesita acceder a una variable globalmente a través del espacio de trabajo y las funciones del usuario, use la palabra clave ** global **, es decir, 'ejecución global' tanto en su área de trabajo como en cualquier función que utilice: http://www.mathworks.com/ ayuda/techdoc/matlab_prog/f0-38052.html # f0-38470 - esto es asumiendo que su bucle no está bloqueando la interfaz externa ... –
@Edit 3: Existe tal función: ['assigning'] (http: //www.mathworks.com/help/techdoc/ref/assignin.html) que es _muy_ no recomendado. – Juhl
@Juhl: ¿Por qué esta función es muy desaconsejable? No veo ningún punto en contra de eso O.o – poeschlorn