Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MATLAB中的动态图正在更改我的刻度标签_Matlab_Matlab Figure - Fatal编程技术网

MATLAB中的动态图正在更改我的刻度标签

MATLAB中的动态图正在更改我的刻度标签,matlab,matlab-figure,Matlab,Matlab Figure,大家好,我正在尝试绘制一个Y轴刻度线在-90到90之间的动态条形图。在非动态条形图上执行此操作时,记号标签会正确显示。一旦我让它充满活力,它们就到处都是 希望有人能看到我哪里出了错 % Generate a random vector of -90 to +90 to simulate pitch. pitch = 90*rand(1) - 90*rand(1); %Static bar graph, y tick marks are working here subplot(2,1,1);

大家好,我正在尝试绘制一个Y轴刻度线在-90到90之间的动态条形图。在非动态条形图上执行此操作时,记号标签会正确显示。一旦我让它充满活力,它们就到处都是

希望有人能看到我哪里出了错

% Generate a random vector of -90 to +90 to simulate pitch.

pitch = 90*rand(1) - 90*rand(1);

%Static bar graph, y tick marks are working here
subplot(2,1,1);
bar(pitch);
set(gca,'YLim',[-90.5 90.5]);
set(gca,'YTick',[-90,-45,0,45,90]);
title('Pitch');

%Dynamic bar graph, y tick marks are not working here
subplot(2,1,2);
barGraph = bar(pitch);
set(gca,'YLim',[-90.5 90.5]);
set(gca,'YTick',[-90,-45,0,45,90]);
title('Pitch');


 for j=1:1000,
     pitch = 90*rand(1) - 90*rand(1);
     set(barGraph,'YData',pitch);
     drawnow;
     pause(0.1);
 end

只需在循环之前添加
按住
。(我使用的是Matlab2014a)

只需在循环之前添加
按住
。(我使用的是Matlab2014a)

只需在循环之前添加
按住
。(我使用的是Matlab2014a)

只需在循环之前添加
按住
。(我正在使用MATLAB 2014a)

方法1 将2个
集合(gca…
行移动到循环中,在
集合(..'YData'..)之后和
绘图之前

for jj=1:20
    pitch = 90*rand(1) - 90*rand(1);
    set(barGraph,'YData',pitch);
    set(gca,'YLim',[-90.5 90.5]);
    set(gca,'YTick',[-90,-45,0,45,90]);
    drawnow;
    pause(0.1);
end
方法2 正如@Dev iL所建议的,使用
按住
,通过循环保持轴属性。 但是使用
hold-on
只会产生一个问题,即如果您运行脚本超过1次,条形图将彼此重叠。同时使用
hold-off
将解决此问题

hold on
for jj=1:20
    pitch = 90*rand(1) - 90*rand(1);
    set(barGraph,'YData',pitch);
    drawnow;
    pause(0.1);
end
hold off
方法3(不好) 在循环之前,将属性
YDataSource
设置为
'pitch'
。在循环内部,使用
刷新数据更新图形。
还需要
保持
保持

set(gca,'YLim',[-90.5 90.5]);
set(gca,'YTick',[-90,-45,0,45,90]);
set(barGraph, 'YDataSource', 'pitch');
hold on

for jj=1:20
    pitch = 90*rand(1) - 90*rand(1);
    refreshdata;
    pause(0.1);
end
hold off
此方法的性能比前2种方法慢2.5倍。不要使用它

关于循环迭代器
j
j
,以及
i
,是许多流行语言中最常用的循环迭代器之一。但是在Matlab中,它们被专门指定给虚单位。覆盖此特殊变量的默认值是可以的,但是

改用
ii
jj

方法1 将2个
集合(gca…
行移动到循环中,在
集合(..'YData'..)之后和
绘图之前

for jj=1:20
    pitch = 90*rand(1) - 90*rand(1);
    set(barGraph,'YData',pitch);
    set(gca,'YLim',[-90.5 90.5]);
    set(gca,'YTick',[-90,-45,0,45,90]);
    drawnow;
    pause(0.1);
end
方法2 正如@Dev iL所建议的,使用
按住
,通过循环保持轴属性。 但是使用
hold-on
只会产生一个问题,即如果您运行脚本超过1次,条形图将彼此重叠。同时使用
hold-off
将解决此问题

hold on
for jj=1:20
    pitch = 90*rand(1) - 90*rand(1);
    set(barGraph,'YData',pitch);
    drawnow;
    pause(0.1);
end
hold off
方法3(不好) 在循环之前,将属性
YDataSource
设置为
'pitch'
。在循环内部,使用
刷新数据更新图形。
还需要
保持
保持

set(gca,'YLim',[-90.5 90.5]);
set(gca,'YTick',[-90,-45,0,45,90]);
set(barGraph, 'YDataSource', 'pitch');
hold on

for jj=1:20
    pitch = 90*rand(1) - 90*rand(1);
    refreshdata;
    pause(0.1);
end
hold off
此方法的性能比前2种方法慢2.5倍。不要使用它

关于循环迭代器
j
j
,以及
i
,是许多流行语言中最常用的循环迭代器之一。但是在Matlab中,它们被专门指定给虚单位。覆盖此特殊变量的默认值是可以的,但是

改用
ii
jj

方法1 将2个
集合(gca…
行移动到循环中,在
集合(..'YData'..)之后和
绘图之前

for jj=1:20
    pitch = 90*rand(1) - 90*rand(1);
    set(barGraph,'YData',pitch);
    set(gca,'YLim',[-90.5 90.5]);
    set(gca,'YTick',[-90,-45,0,45,90]);
    drawnow;
    pause(0.1);
end
方法2 正如@Dev iL所建议的,使用
按住
,通过循环保持轴属性。 但是使用
hold-on
只会产生一个问题,即如果您运行脚本超过1次,条形图将彼此重叠。同时使用
hold-off
将解决此问题

hold on
for jj=1:20
    pitch = 90*rand(1) - 90*rand(1);
    set(barGraph,'YData',pitch);
    drawnow;
    pause(0.1);
end
hold off
方法3(不好) 在循环之前,将属性
YDataSource
设置为
'pitch'
。在循环内部,使用
刷新数据更新图形。
还需要
保持
保持

set(gca,'YLim',[-90.5 90.5]);
set(gca,'YTick',[-90,-45,0,45,90]);
set(barGraph, 'YDataSource', 'pitch');
hold on

for jj=1:20
    pitch = 90*rand(1) - 90*rand(1);
    refreshdata;
    pause(0.1);
end
hold off
此方法的性能比前2种方法慢2.5倍。不要使用它

关于循环迭代器
j
j
,以及
i
,是许多流行语言中最常用的循环迭代器之一。但是在Matlab中,它们被专门指定给虚单位。覆盖此特殊变量的默认值是可以的,但是

改用
ii
jj

方法1 将2个
集合(gca…
行移动到循环中,在
集合(..'YData'..)之后和
绘图之前

for jj=1:20
    pitch = 90*rand(1) - 90*rand(1);
    set(barGraph,'YData',pitch);
    set(gca,'YLim',[-90.5 90.5]);
    set(gca,'YTick',[-90,-45,0,45,90]);
    drawnow;
    pause(0.1);
end
方法2 正如@Dev iL所建议的,使用
按住
,通过循环保持轴属性。 但是使用
hold-on
只会产生一个问题,即如果您运行脚本超过1次,条形图将彼此重叠。同时使用
hold-off
将解决此问题

hold on
for jj=1:20
    pitch = 90*rand(1) - 90*rand(1);
    set(barGraph,'YData',pitch);
    drawnow;
    pause(0.1);
end
hold off
方法3(不好) 在循环之前,将属性
YDataSource
设置为
'pitch'
。在循环内部,使用
刷新数据更新图形。
还需要
保持
保持

set(gca,'YLim',[-90.5 90.5]);
set(gca,'YTick',[-90,-45,0,45,90]);
set(barGraph, 'YDataSource', 'pitch');
hold on

for jj=1:20
    pitch = 90*rand(1) - 90*rand(1);
    refreshdata;
    pause(0.1);
end
hold off
此方法的性能比前2种方法慢2.5倍。不要使用它

关于循环迭代器
j
j
,以及
i
,是许多流行语言中最常用的循环迭代器之一。但是在Matlab中,它们被专门指定给虚单位。覆盖此特殊变量的默认值是可以的,但是


改用
ii
jj

这似乎是个bug。看看这里,这似乎是个bug。看看这里,这似乎是个bug。看看这里,这似乎是个bug。看看这里,如果脚本要运行超过1次,还需要在循环后添加
延迟
,否则图表将结束意外分层。如果脚本要运行超过1次,则还需要在循环后添加
延迟
;否则图形将意外叠加。如果脚本要运行超过1次,则还需要在循环后添加
延迟
;否则图形将意外叠加。还需要添加<如果脚本要运行1次以上,则代码>在循环后暂停
;否则,图形将