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

1 回表示 (過去 30 日間)
Tom Clark
Tom Clark 2015 年 12 月 4 日
コメント済み: Tom Clark 2015 年 12 月 4 日
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 件のコメント
Tom Clark
Tom Clark 2015 年 12 月 4 日
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')

サインインしてコメントする。

回答 (0 件)

カテゴリ

Help Center および File ExchangeWhos についてさらに検索

製品

Community Treasure Hunt

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

Start Hunting!

Translated by