Borrar filtros
Borrar filtros

How can I run publish() in a workspace other than base?

2 visualizaciones (últimos 30 días)
Tom Clark
Tom Clark el 4 de Dic. de 2015
Comentada: Tom Clark el 4 de Dic. de 2015
I'm using the publish() function to build up an automated reporting process. BUT, whenever I call publish() from within a function, it attempts to execute its target in the MATLAB base workspace, not the workspace of the present function. The following code generates an error:
function callingFunction()
a = 10;
publish(myReportingScript)
where myReportingScript.m contains:
disp(a)
If there is no variable a in MATLAB's base workspace, this simply doesn't work. Surely publish() should be executing in the workspace of its caller, not always the base workspace??? How can I get around this?
[Note: I also tried converting my script to a function and calling with:
function callingFunction()
a = 10;
options.codeToEvaluate = 'myReportingFcn(a)'
publish(myReportingFcn)
... but that doesn't work either.
  1 comentario
Tom Clark
Tom Clark el 4 de Dic. de 2015
Not a full answer, but I developed a workaround which adds the requisite variables to the base workspace then deletes them after publishing.
Requires:
- putvar(), on the FEX, from John d'Ericco (John saves me yet again!)
- care that this doesn't overwrite then delete similarly named variables in that workspace.
options.codeToEvaluate = 'myReportingFcn(a)';
putvar(a)
publish('trainFoilReport.m',options)
evalin('base','clearvars a')

Iniciar sesión para comentar.

Respuestas (0)

Productos

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by