小编use*_*990的帖子

将轴放在前面而不重新绘制图形?

有没有一种方法在Matlab中将轴放在前面而不让Matlab drawnow隐式执行redraw()?

我的问题的背景:我正在准备一个包含多个子图的大图.在其中一些我有2个轴叠加,因为我想在2个不同的y尺度上看到相同的数据.在玩完轴设置之后,我终于让这个数字看起来像我预期的那样.

但是:我需要将其中一个轴带到前面(在我的例子中,左轴是hAxL).所以我在我的代码中有这一行:axes(hAxL); 这是有效的,但是,似乎Matlab不仅将轴放在前面,而且还重绘了数字.

这是一个遗憾,因为我正在准备整个数字'visible','off'以加速它.这隐含了drawnow我的想法并使图形弹出几次,这很烦人并且需要更长的代码执行...

我已经尝试过了这个:set(gcf ,'CurrentAxes',hAxL)但是它只会产生hAxL当前的轴并且不会将它带到前面.关于如何解决这个问题的任何想法?

matlab plot multiple-axes

5
推荐指数
2
解决办法
8531
查看次数

从标量结构的字段动态创建数值矩阵

在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.

有没有办法实现这一点,而不使用丑陋的结构,包括结构字段名称,循环等的过滤器?

非常感谢你!

菲利普

matlab structure

2
推荐指数
1
解决办法
130
查看次数

标签 统计

matlab ×2

multiple-axes ×1

plot ×1

structure ×1