24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1559  |  回复: 11

plxh

木虫 (正式写手)

[求助] Matlab绘图再求助

在帖子http://muchong.com/bbs/viewthread.php?tid=4354741中部分实现了绘图目标。感谢sogooda朋友!

利用sogooda同学给出的代码实现了画出如下效果的图。
现在有新的想法,用什么方式可以看到小方块  一个一个地方的变动过程呢?

用Matlab的GUI或者Real Time Workshop 或者S-Function?
本人新手,请各位同学不吝赐教!!
PS:mat文件里的数据是用把simulink里的数据用To Workspace导出到工作空间的。
效果图
回复此楼

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : matlab.mat
  • 2012-04-09 09:27:44, 9.33 K

» 本帖@通知

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sogooda

金虫 (正式写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
xiegangmai: 金币+1, 谢谢参与! 2012-04-09 23:18:55
plxh: 金币+5, ★★★很有帮助, 非常感谢!请看楼下回复内容! 2012-04-10 06:59:19
在函数文件的最后加一句
pause
试试。
2楼2012-04-09 23:06:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sogooda

金虫 (正式写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★
xiegangmai: 金币+1, 谢谢参与! 2012-04-09 23:19:11
plxh: 金币+5, ★★★很有帮助 2012-04-10 09:32:06
或者自动一点儿用
pause(1)
3楼2012-04-09 23:09:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

plxh

木虫 (正式写手)

引用回帖:
3楼: Originally posted by sogooda at 2012-04-09 23:09:03:
或者自动一点儿用
pause(1)

哥们,谢谢你!我还没试呢,但我想这样是在一张图上保留原菱形再间断显示后面的吧?   我想实现的是菱形运动过程,不保留以前的位置。   是不是可以每次汇图就保存图片文件,然后顺序播放就可得到动画过程?   这样的话保存图片的命令怎么写呢?求助!
4楼2012-04-10 06:56:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

plxh

木虫 (正式写手)

引用回帖:
3楼: Originally posted by sogooda at 2012-04-09 23:09:03:
或者自动一点儿用
pause(1)

兄弟你这的确是实现了动画显示。可还是像我说的那样,保留了前面的图像。是不是可以每次汇图就保存图片文件,然后顺序播放就可得到动画过程?   这样的话保存图片的命令怎么写呢?求助!
5楼2012-04-10 09:33:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dbb627

荣誉版主 (著名写手)

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
plxh: 金币+5, ★★★很有帮助, 这位兄弟谢谢你!你可能没看到。我要把三个数据回到一张图上,不过你这个很有帮助。 2012-04-10 10:17:04
CODE:
function aa

clear;clc;close all
load matlab3
for i=1:3;
    hold on;
    if i==1   %必须是用两个等号。
          figure1=figure('color','w')  
        eta12=eta1(1:5:end,:);

        x=eta12(:,2);
        y=eta12(:,1);
        % theta=eta1(:,3); % ?

        theta=pi/2-eta12(:,3);
        
        myr=linspace(0,0,length(x));
        myg=linspace(0,1,length(x));
        myb=linspace(0,0,length(x));
        for jj=1:length(x)   
           plot(x,y);hold on;
            plotSquare2(x(jj),y(jj),theta(jj),1/30,[myr(jj),myg(jj),myb(jj)]);
            axis equal
            pause(0.1)
    hold off;
        end
        colormap([myr', myg', myb'])
        colorbar
        


    elseif i==2
         figure1=figure('color','w')
        eta22=eta2(1:5:end,:);

        x=eta22(:,2);
        y=eta22(:,1);
        % theta=eta1(:,3); % ?

        theta=pi/2-eta22(:,3);
        
        myr=linspace(0,0,length(x));
        myg=linspace(0,1,length(x));
        myb=linspace(0,0,length(x));
        for jj=1:length(x)
            plot(x,y);hold on;
            plotSquare2(x(jj),y(jj),theta(jj),1/30,[myr(jj),myg(jj),myb(jj)]);
            axis equal
            pause(0.1)
    hold off;
        end
        colormap([myr', myg', myb'])
        colorbar
        
        
    elseif i==3        
          figure1=figure('color','w')
        eta32=eta1(1:5:end,:);

        x=eta32(:,2);
        y=eta32(:,1);
        % theta=eta1(:,3); % ?

        theta=pi/2-eta32(:,3);
        
        myr=linspace(0,0,length(x));
        myg=linspace(0,1,length(x));
        myb=linspace(0,0,length(x));
        for jj=1:length(x)   
            plot(x,y);hold on;
            plotSquare2(x(jj),y(jj),theta(jj),1/30,[myr(jj),myg(jj),myb(jj)]);
            axis equal
            pause(0.1)
    hold off;
        end
        colormap([myr', myg', myb'])
        colorbar
        
    end
   
    end
   
   


function plotSquare2(x0,y0,theta,a,mycolor)
xs=[-2*a,-2*a,2*a,3*a,2*a,-2*a];
ys=[a,-a,-a,0,a,a];

xy=[cos(theta),-sin(theta);
    sin(theta),cos(theta)]*[xs;ys] ;
fill(xy(1,:)+x0,xy(2,:)+y0,mycolor)

复制到editor中保存为.m文件,点击run运行
The more you learn, the more you know, the more you know, and the more you forget. The more you forget, the less you know. So why bother to learn.
6楼2012-04-10 10:04:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

plxh

木虫 (正式写手)

引用回帖:
6楼: Originally posted by dbb627 at 2012-04-10 10:04:10:
function aa

clear;clc;close all
load matlab3
for i=1:3;
    hold on;
    if i==1   %必须是用两个等号。
          figure1=figure('color','w')  
        eta12=eta1(1:5:end,;

        x ...

我现在自己有思路了,不过还是有点困难。
我想设置colorbar的ylabel,可下面两个命令都不行。
colorbar('Ylabel','Times/s','YTickLabel',[0 100 200 300 400 500 600 700])

set(colorbar, 'Ylabel','Times/s')
7楼2012-04-10 10:20:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

plxh

木虫 (正式写手)

引用回帖:
7楼: Originally posted by plxh at 2012-04-10 10:20:46:
我现在自己有思路了,不过还是有点困难。
我想设置colorbar的ylabel,可下面两个命令都不行。
colorbar('Ylabel','Times/s','YTickLabel',)

set(colorbar, 'Ylabel','Times/s')

求助设置colorbar的ylabel的命令!
8楼2012-04-10 10:25:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dbb627

荣誉版主 (著名写手)

【答案】应助回帖

★ ★ ★ ★ ★
plxh: 金币+5, 有帮助, 首先谢谢斑竹!但是实现的效果不对了。在一起实现,但半径是不一样的,这个我自己做到了。现在我的关注点是colorbar,首先是ylabel,其次是'YTickLabel',现在竟然在最大值700之后又出现了0,100.晕死~~ 2012-04-10 10:53:38
CODE:
function aa

clear;clc;close all
load matlab3
        eta12=eta1(1:5:end,:);

        x=eta12(:,2);
        y=eta12(:,1);
        % theta=eta1(:,3); % ?

        theta1=pi/2-eta12(:,3);
         
        eta22=eta2(1:5:end,:);

        x=eta22(:,2);
        y=eta22(:,1);
        % theta=eta1(:,3); % ?

        theta2=pi/2-eta22(:,3);
         
        eta32=eta1(1:5:end,:);

        x=eta32(:,2);
        y=eta32(:,1);
        % theta=eta1(:,3); % ?

        theta3=pi/2-eta32(:,3);
        
        myr=linspace(0,0,length(x));
        myg=linspace(0.5,1,length(x));
        myb=linspace(0,0,length(x));
        for jj=1:length(x)   
            plot(x,y);hold on;colormap([myr', myg', myb'])
            plotSquare2(x(jj),y(jj),theta1(jj),1/30,[myr(jj),myg(jj),myb(jj)]);
            plotSquare2(x(jj),y(jj),theta2(jj),1/30,[myr(jj),myg(jj),myb(jj)]);
            plotSquare2(x(jj),y(jj),theta3(jj),1/30,[myr(jj),myg(jj),myb(jj)]);
             colorbar
            axis([min(x)-1 max(x)+1 min(y)-1 max(y)+1])
            pause(0.05)
            hold off;
        end

function plotSquare2(x0,y0,theta,a,mycolor)
xs=[-2*a,-2*a,2*a,3*a,2*a,-2*a];
ys=[a,-a,-a,0,a,a];

xy=[cos(theta),-sin(theta);
    sin(theta),cos(theta)]*[xs;ys] ;
fill(xy(1,:)+x0,xy(2,:)+y0,mycolor)

The more you learn, the more you know, the more you know, and the more you forget. The more you forget, the less you know. So why bother to learn.
9楼2012-04-10 10:43:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

plxh

木虫 (正式写手)

引用回帖:
8楼: Originally posted by plxh at 2012-04-10 10:25:39:
求助设置colorbar的ylabel的命令!

colorbar,首先是ylabel,其次是'YTickLabel',现在竟然在最大值700之后又出现了0,100.晕死~~ 我想设置colorbar的ylabel,可下面两个命令都不行。

colorbar('Ylabel','Times/s','YTickLabel',)

set(colorbar, 'Ylabel','Times/s')


10楼2012-04-10 10:57:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 plxh 的主题更新
信息提示
请填处理意见