声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2204|回复: 12

[绘图技巧] MATLAB要個別畫出各個點相關的線?要怎畫?

[复制链接]
发表于 2009-3-11 14:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
比如說有三個矩陣, 第一個與第二個矩陣是代表x,y,當座標的. 第三個矩陣是各個點的連線關係
要怎麼可以畫出他的連線ㄚ?
比如說
x=[9 7 3 5 7 1 6 8 2 ]; y=[8 3 4 6 8 7 9 2 4 ]
z=[
0 0 1 1 0 0 0 1 1; 0 0 0 1 0 1 0 0 0; 1 0 0 0 0 0 0 0 0;
1 1 1 0 0 1 1 1 1; 1 0 1 0 0 0 1 1 1; 0 0 0 0 0 0 0 0 1;
1 1 1 1 1 1 0 0 1; 0 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0 0]

比如說第一行裡面3,4,5,8顯示1, 代表第一行要連線到這幾個點上面
上面的是範例啦, 之後要劃一大堆點..........
希望能有哪個大大幫幫我, 感恩

[ 本帖最后由 ChaChing 于 2009-3-12 18:57 编辑 ]
回复
分享到:

使用道具 举报

发表于 2009-3-11 18:00 | 显示全部楼层
水平有限,没看懂问题。:@(
 楼主| 发表于 2009-3-11 20:59 | 显示全部楼层
咧= =, 我隔壁的牛人帮我解决了

俺是说, 有三个矩阵.  x纪录所有点的x轴点, y纪录所有点的y轴点, z纪录每个点的联机关系
比如说
那个矩阵, 第一行代表第一个点跟其它点的联机, 第一个点会联机到3,4,5,7这几个点
因为没有设定的话使用plot(x,y), 会直接连成一条线…俺就是不想要连成一条线><

[ 本帖最后由 ChaChing 于 2009-3-12 10:39 编辑 ]
发表于 2009-3-11 22:37 | 显示全部楼层

回复 板凳 lqbtbs 的帖子

刚刚才发现两岸的行列观念相反, 请注意!
楼主解决了, 就给齐程式与大伙分享吧!

[ 本帖最后由 ChaChing 于 2009-3-12 19:01 编辑 ]
发表于 2009-3-11 22:39 | 显示全部楼层
是啊,这个行列竟然,概念相反。。。 supprise
发表于 2009-3-12 09:07 | 显示全部楼层

回复 楼主 lqbtbs 的帖子

  1. clear;clc
  2. x=[9 7 3 5 7 1 6 8 2 ];
  3. y=[8 3 4 6 8 7 9 2 4 ]';
  4. z=[
  5. 0 0 1 1 0 0 0 1 1; 0 0 0 1 0 1 0 0 0; 1 0 0 0 0 0 0 0 0;
  6. 1 1 1 0 0 1 1 1 1; 1 0 1 0 0 0 1 1 1; 0 0 0 0 0 0 0 0 1;
  7. 1 1 1 1 1 1 0 0 1; 0 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0 0];

  8. for jj=1:length(x)
  9.     xx=repmat(x(jj),length(x),1);
  10.     xp=xx(find(z(:,jj)));
  11.     yp=y(find(z(:,jj)));
  12.     plot([zeros(1,length(xp));ones(1,length(xp))*10],[xp';yp'],'g');hold on
  13. end
  14. plot([0 0],[0 10]);
  15. plot([10 10],[0 10])
  16. axis([-0.5 10.5 -0.5 10.5])
  17. set(gca,'ytick',1:10);
  18. set(gca,'xtick',[0,10])
  19. set(gca,'xticklabel',{'x','y'})
复制代码
仅供参考吧。又学到一点儿,原来两岸的行列概念是相反的啊,谢谢chaching。呵呵

[ 本帖最后由 ChaChing 于 2009-3-12 18:59 编辑 ]
untitled.jpg

评分

1

查看全部评分

发表于 2009-3-12 11:57 | 显示全部楼层
原来楼主问的是这种意思!?
本来还以为是图上有9个点, 互相之间的连接关系! 但如此z矩阵应该要对称才是!

行列概念是相反的, 也是昨晚才发现确定!
难怪以前有些帖总感觉明明对, 却被人认定是错的! 日後小心

好奇, 到底什麽工程问题?

[ 本帖最后由 ChaChing 于 2009-3-12 13:18 编辑 ]
 楼主| 发表于 2009-3-12 15:20 | 显示全部楼层

歹事= =,俺忘了放隔壁牛X跟我說的....

原本要问题是,藉由z可以了解各个点的联机状况.  俺隔壁的牛X偷喵我的屏幕........就给解了(XD)
举个比较明确点的例子吧~
比如说,班上有座号1号到9号
1号觉得自己跟3号4号5号7号同学感情比较好, 2号觉得自己跟4号7号比较好, 以此类推
这样应该比较清楚吧
歹事,之前讲的太模糊了, 本来想要加箭头的, 可惜.....俺不会
隔壁的牛X不看我屏幕了.....(哈哈), 晚点再来请教会的大大吧

俺发现z举例的有点滥.....改了一下
程序代码如下:
x=[9 7 3 5 7 1 6 8 2 ]; y=[8 3 4 6 8 7 9 2 4 ]'; %% error!! by ChaChing
z=[
0 0 1 1 0 0 0 1 0; 0 0 0 1 0 1 0 0 0; 1 0 0 0 0 0 0 0 0;
1 1 1 0 0 1 1 1 0; 1 0 1 0 0 0 1 1 0; 0 0 0 0 0 0 0 0 0;
1 1 1 1 1 1 0 0 0; 0 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0 0];
plot(x,y,'o');                           %先画圈圈来啾啾
n=9;                                     %9个点麻
for i=1:n
    for j=1:n
        if(z(i,j)==1);
            if(i~=j);                     %同个点跟同个点联机.........没啥意思吧
                d=[x(1,i) x(1,j)]; e=[y(1,i) y(1,j)]; hold off
                line(d,e);               %画线
            end
        end
    end
end

[ 本帖最后由 ChaChing 于 2009-3-12 18:58 编辑 ]

连出来的图,可怜的9号稿自闭…..

连出来的图,可怜的9号稿自闭…..

评分

1

查看全部评分

 楼主| 发表于 2009-3-12 15:25 | 显示全部楼层

感谢sogooda大

其实sogooda画的也蛮清楚说, 加箭头会更好= =*......
原来还可以这样画ㄚ, 又多了点思路了, 感恩ㄚ~


回复7ChaChing 的帖子
没啥工程问题啦= =||| , 俺也是着学生而已,搞不了工程~哈
有做几个问卷,跑跑关系图罢了


????  行列相反?
这个例子.......俺在编的时候没怎么注意到说......  误会啦


[ 本帖最后由 ChaChing 于 2009-3-12 19:05 编辑 ]
发表于 2009-3-12 16:07 | 显示全部楼层
x=[9 7 3 5 7 1 6 8 2 ];
y=[8 3 4 6 8 7 9 2 4 ]';
z=[0 0 1 1 0 0 0 1 0; 0 0 0 1 0 1 0 0 0; 1 0 0 0 0 0 0 0 0;
    1 1 1 0 0 1 1 1 0; 1 0 1 0 0 0 1 1 0; 0 0 0 0 0 0 0 0 0;
    1 1 1 1 1 1 0 0 0; 0 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0 0];
[xx,yy]=find(z); zz1=[xx yy]';
figure; line(x(zz1),y(zz1),'marker','o')

可惜matlab里应该没有画带箭头的line的命令,箭头的问题不太好解决,哪位大大有好办法??

[ 本帖最后由 ChaChing 于 2009-3-12 19:06 编辑 ]

评分

1

查看全部评分

 楼主| 发表于 2009-3-12 16:30 | 显示全部楼层

回复 10楼 ydlcsu 的帖子

挖~更精简
开了眼界
发表于 2009-3-12 20:21 | 显示全部楼层
在ChaChing的启发,用quiver搞定了箭头的问题,但是我感觉图不是很漂亮,matlab在做这种类型的图方面表现不是很好。
x=[9 7 3 5 7 1 6 8 2 ];
y=[8 3 4 6 8 7 9 2 4 ];
z=[0 0 1 1 0 0 0 1 0; 0 0 0 1 0 1 0 0 0; 1 0 0 0 0 0 0 0 0;
    1 1 1 0 0 1 1 1 0; 1 0 1 0 0 0 1 1 0; 0 0 0 0 0 0 0 0 0;
    1 1 1 1 1 1 0 0 0; 0 0 0 0 0 0 0 0 0; 0 0 0 0 0 0 0 0 0];
[start_ind end_ind]=find(z);
start_point=[x(start_ind);y(start_ind)];
end_point=[x(end_ind);y(end_ind)];
diff=end_point-start_point;
quiver(start_point(1,:),start_point(2,:),diff(1,:),diff(2,:),0)

[ 本帖最后由 ydlcsu 于 2009-3-12 20:24 编辑 ]

评分

1

查看全部评分

发表于 2009-3-12 21:51 | 显示全部楼层
客气, 那来的启发!
本来以为feather直接可以达成箭头, 後开matlab help看看, 发现不对, 感快删除! 我想还是被LZ看到了
刚刚才又有空回来, 搜了下! 大家看看
http://forum.vibunion.com/forum/vi ... %BC%FD%CD%B7&page=2
http://forum.vibunion.com/forum/vi ... hlight=%BC%FD%CD%B7
http://www.mathworks.com/matlabcentral/fileexchange/278
注意annotation, v6.5无此函数, r2006a就有!

[ 本帖最后由 ChaChing 于 2009-3-12 22:08 编辑 ]
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-2 16:06 , Processed in 0.080773 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表