首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从其他实时脚本调用matlab实时脚本时压制输出

从其他实时脚本调用matlab实时脚本时压制输出
EN

Stack Overflow用户
提问于 2019-07-02 09:27:22
回答 2查看 333关注 0票数 5

我有一个实时脚本(main.mlx),它调用另外两个活动脚本(sub1.mlx,sub2.mlx)。我希望输出在自己调用下标时显示,而不是在调用主脚本时显示,尽管我希望在主脚本中显示一些内容。我试图在主脚本中的下标调用后面添加一个分号。

最小工作示例

main.mlx:

代码语言:javascript
复制
clear vars

sub1;
sub2;

分1.mlx:

代码语言:javascript
复制
syms A1 B1

A1 = B1

分2.mlx:

代码语言:javascript
复制
syms A2 B2

A2 = B2

预期产出:无

输出:

我尝试过的(失败):

代码语言:javascript
复制
clear vars

run('sub1.mlx');
run('sub2.mlx');
EN

回答 2

Stack Overflow用户

发布于 2019-07-02 09:39:17

一个解决办法是:

代码语言:javascript
复制
clear vars
out1=evalc('sub1');
out2=evalc('sub2');

其中out1和out2是可选的,以捕获输出。

票数 3
EN

Stack Overflow用户

发布于 2019-07-02 10:07:32

以下金科玉律可应用于任何MATLAB编码,适用于此处。

始终禁止使用;显示赋值,并在需要时分别显式显示变量。

在这种情况下,我们可以执行以下操作:

  • main.mlx内部,我们编写 %调用没有输出的子脚本bDisp = false;sub1;sub2;
  • sub1.mlxsub2.mlx内部,您可以将输出构造得更加显式 默认情况下(仅运行此脚本时),如果存在( ' bDisp ','var‘) bDisp =true,则显示事物;end syms A1 B1 %使用半冒号终止赋值,以抑制输出A1 = B1;如果bDisp A1 % disp( A1 )更详细,则在这里显式显示A1(如果启用bDisp),但没有显示"A1 =“end。

此方法使您可以控制何时显示事物,而不管您从何处调用它们。

如果需要,可以将默认检查(位于sub1.mlx/sub2.mlx顶部)变得更加复杂。例如,您可以使用dbstack来确定从何处调用正在执行的代码(即哪个函数),但是动态脚本在堆栈中有点古怪。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56849300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档