lqbtbs 发表于 2009-3-11 14:17

MATLAB要個別畫出各個點相關的線?要怎畫?

比如說有三個矩陣, 第一個與第二個矩陣是代表x,y,當座標的. 第三個矩陣是各個點的連線關係
要怎麼可以畫出他的連線ㄚ?
比如說
x=; y=
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 编辑 ]

hanihaoma 发表于 2009-3-11 18:00

水平有限,没看懂问题。:@(

lqbtbs 发表于 2009-3-11 20:59

咧= =, 我隔壁的牛人帮我解决了

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

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

ChaChing 发表于 2009-3-11 22:37

回复 板凳 lqbtbs 的帖子

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

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

hanihaoma 发表于 2009-3-11 22:39

是啊,这个行列竟然,概念相反。。。 supprise

sogooda 发表于 2009-3-12 09:07

回复 楼主 lqbtbs 的帖子

clear;clc
x=;
y=';
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];

for jj=1:length(x)
    xx=repmat(x(jj),length(x),1);
    xp=xx(find(z(:,jj)));
    yp=y(find(z(:,jj)));
    plot(,,'g');hold on
end
plot(,);
plot(,)
axis([-0.5 10.5 -0.5 10.5])
set(gca,'ytick',1:10);
set(gca,'xtick',)
set(gca,'xticklabel',{'x','y'})仅供参考吧。又学到一点儿,原来两岸的行列概念是相反的啊,谢谢chaching。呵呵

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

ChaChing 发表于 2009-3-12 11:57

原来楼主问的是这种意思!?
本来还以为是图上有9个点, 互相之间的连接关系! 但如此z矩阵应该要对称才是!

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

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

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

lqbtbs 发表于 2009-3-12 15:20

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

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

俺发现z举例的有点滥.....改了一下
程序代码如下:
x=; y='; %% 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=; e=; hold off
                line(d,e);               %画线
            end
      end
    end
end

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

lqbtbs 发表于 2009-3-12 15:25

感谢sogooda大

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


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


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


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

ydlcsu 发表于 2009-3-12 16:07

x=;
y=';
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];
=find(z); zz1=';
figure; line(x(zz1),y(zz1),'marker','o')

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

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

lqbtbs 发表于 2009-3-12 16:30

回复 10楼 ydlcsu 的帖子

挖~更精简
开了眼界

ydlcsu 发表于 2009-3-12 20:21

在ChaChing的启发,用quiver搞定了箭头的问题,但是我感觉图不是很漂亮,matlab在做这种类型的图方面表现不是很好。
x=;
y=;
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];
=find(z);
start_point=;
end_point=;
diff=end_point-start_point;
quiver(start_point(1,:),start_point(2,:),diff(1,:),diff(2,:),0)

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

ChaChing 发表于 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 编辑 ]
页: [1]
查看完整版本: MATLAB要個別畫出各個點相關的線?要怎畫?