国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
Matlab中使用Plot函數(shù)動(dòng)態(tài)畫(huà)圖方法總結(jié)
Matlab除了強(qiáng)大的矩陣運(yùn)算,仿真分析外,繪圖功能也是相當(dāng)?shù)膹?qiáng)大,靜態(tài)畫(huà)圖沒(méi)什么問(wèn)題,由于Matlab本身的多線程編程缺陷,想要?jiǎng)討B(tài)的畫(huà)圖,并且能夠很好的在GUI中得到控制,還不是一件很容易的事情,下面總結(jié)幾種方法。

一. AXIS 移動(dòng)坐標(biāo)系
    這種方法是最簡(jiǎn)單的一種方法,適合于數(shù)據(jù)已經(jīng)全部生成的場(chǎng)合,先畫(huà)圖,然后移動(dòng)坐標(biāo)軸。實(shí)例代碼如下:

%%
%先畫(huà)好,然后更改坐標(biāo)系
%在命令行中 使用 Ctrl+C 結(jié)束
t=0:0.1:100*pi;
m=sin(t);
plot(t,m);
x=-2*pi;
axis([x,x+4*pi,-2,2]);
grid on
while 1
    if x>max(t)
        break;
    end
    x=x+0.1;
    axis([x,x+4*pi,-2,2]); %移動(dòng)坐標(biāo)系
    pause(0.1);
end


二. Hold On 模式
    
       此種方法比較原始,適合于即時(shí)數(shù)據(jù),原理是先畫(huà)上一幀,接著保留原始圖像,追加下一幀圖像,此種方式比較繁瑣,涉及畫(huà)圖細(xì)節(jié),并且沒(méi)有完整并連續(xù)的Line對(duì)象數(shù)據(jù)。

   例如:

%%
% Hold On 法
% 此種方法只能點(diǎn),或者
分段劃線
hold off
t=0;
m=0;
t1=[0 0.1]; %要構(gòu)成序列
m1=[sin(t1);cos(t1)];
p = plot(t,m,'*',t1,m1(1,:),'-r',t1,m1(2,:),'-b','MarkerSize',5);  
x=-1.5*pi;
axis([x x+2*pi -1.5 1.5]);
grid on;

for i=1:100
    hold on
    t=0.1*i; %下一個(gè)點(diǎn)
    m=t-floor(t);
    t1=t1+0.1; %下一段線(組)
    m1=[sin(t1);cos(t1)];
    p = plot(t,m,'*',t1,m1(1,:),'-r',t1,m1(2,:),'-b','MarkerSize',5);  
    x=x+0.1;
    axis([x x+2*pi -1.5 1.5]);
    pause(0.01);
end


三. Plot 背景擦除模式

這種模式比較適合畫(huà)動(dòng)畫(huà),效率比較高,刷新閃爍小,適合即時(shí)數(shù)據(jù),最終的Line結(jié)構(gòu)數(shù)據(jù)完整。

了解此方法之前要搞清楚 Plot函數(shù)的原型是什么: Plot函數(shù),輸入為 X-Y(-X)坐標(biāo)元組、以及“屬性”-“值對(duì),輸出為一個(gè)列向量(每條曲線歲對(duì)應(yīng)的Line結(jié)構(gòu) Handle,每一行代表一個(gè) 線條的handles),每一線條都有 XData,YData 向量。如果你畫(huà)了2條線,那么會(huì)返回 2×1的向量。
重新畫(huà)圖不需要 重新書(shū)寫(xiě) Plot,只需要 刷新圖像即可,使用drawnow函數(shù)。

完整實(shí)例如下:

1. 畫(huà)一個(gè)點(diǎn)的動(dòng)畫(huà):

%%
%采用背景擦除的方法,動(dòng)態(tài)的劃點(diǎn),并且動(dòng)態(tài)改變坐標(biāo)系
% t,m 均為一行 ,并且不能為多行
t=0;
m=0;
p = plot(t,m,'*',...
   'EraseMode','background','MarkerSize',5);
x=-1.5*pi;
axis([x x+2*pi -1.5 1.5]);
grid on;

for i=1:1000
    t=0.1*i;       %兩個(gè)變量均不追加
    m=sin(0.1*i);
    set(p,'XData',t,'YData',m)
    x=x+0.1;   
    drawnow
    axis([x x+2*pi -1.5 1.5]);
    pause(0.1);
end


2. 動(dòng)態(tài)多條曲線(即時(shí)數(shù)據(jù))

%%
%采用背景擦除的方法,動(dòng)態(tài)的劃線,并且動(dòng)態(tài)改變坐標(biāo)系
% 多行劃線

t=[0]
m=[sin(t);cos(t)]
p = plot(t,m,...
   'EraseMode','background','MarkerSize',5);
x=-1.5*pi;
axis([x x+2*pi -1.5 1.5]);
grid on;


for i=1:1000
    t=[t 0.1*i];                   %Matrix 1*(i+1)
    m=[m [sin(0.1*i);cos(0.1*i)]]; %Matrix 2*(i+1)
    set(p(1),'XData',t,'YData',m(1,:))
    set(p(2),'XData',t,'YData',m(2,:))   
    drawnow
    x=x+0.1;   
    axis([x x+2*pi -1.5 1.5]);
    pause(0.5);
end


上面的這幾個(gè)畫(huà)圖方式的示例只是簡(jiǎn)單的for循環(huán),是單線程的,如果是涉及到GUI的編程,那么請(qǐng)使用Timer來(lái)完成這件事情,Timer是我在Matlab中實(shí)現(xiàn)多線程唯一方法(沒(méi)有找到別的方法)。
引:http://www.cnblogs.com/duanp/archive/2008/12/Matlab-Plot-Animation.html
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
matlab實(shí)用函數(shù)及技巧整理
MATLAB函數(shù)畫(huà)圖
matlab畫(huà)圖命令積累
Matlab繪圖-很詳細(xì),很全面
第四節(jié) Matlab中的圖形
Matlab入門基礎(chǔ)詳解
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服