有没有一种方法在Matlab中将轴放在前面而不让Matlab drawnow隐式执行redraw()?
我的问题的背景:我正在准备一个包含多个子图的大图.在其中一些我有2个轴叠加,因为我想在2个不同的y尺度上看到相同的数据.在玩完轴设置之后,我终于让这个数字看起来像我预期的那样.
但是:我需要将其中一个轴带到前面(在我的例子中,左轴是hAxL).所以我在我的代码中有这一行:axes(hAxL);
这是有效的,但是,似乎Matlab不仅将轴放在前面,而且还重绘了数字.
这是一个遗憾,因为我正在准备整个数字'visible','off'以加速它.这隐含了drawnow我的想法并使图形弹出几次,这很烦人并且需要更长的代码执行...
我已经尝试过了这个:set(gcf ,'CurrentAxes',hAxL)但是它只会产生hAxL当前的轴并且不会将它带到前面.关于如何解决这个问题的任何想法?
在Matlab中,我有S一些带有一些字段的标量结构.每个字段都包含一个数字向量,并且所有这些向量都具有相同的大小nx1.
现在我想根据选择的字段创建一个数字矩阵.
起点是一个大小合理的逻辑掩码mx1,其中m是字段数S.mask(i)是true如果的第i个场S应被包括在基体中.所以矩阵大小就是n x sum(mask).
示例(在我的代码中,结构不是以这种方式构建的,当然:-)
vec = rand(1000,1);
S.f1 = vec;
S.f2 = vec;
S.f3 = vec;
S.f4 = vec;
S.f5 = vec;
mask = [false true true false false]; % 5 elements because S has 5 fields
Run Code Online (Sandbox Code Playgroud)
预期的产出是:
output = [S.f2 S.f3];
Run Code Online (Sandbox Code Playgroud)
但是,当然,创建output应该依赖于字段S和动态mask.
有没有办法实现这一点,而不使用丑陋的结构,包括结构字段名称,循环等的过滤器?
非常感谢你!
菲利普