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 编辑 ] 水平有限,没看懂问题。:@( 咧= =, 我隔壁的牛人帮我解决了
俺是说, 有三个矩阵.x纪录所有点的x轴点, y纪录所有点的y轴点, z纪录每个点的联机关系
比如说
那个矩阵, 第一行代表第一个点跟其它点的联机, 第一个点会联机到3,4,5,7这几个点
因为没有设定的话使用plot(x,y), 会直接连成一条线…俺就是不想要连成一条线><
[ 本帖最后由 ChaChing 于 2009-3-12 10:39 编辑 ]
回复 板凳 lqbtbs 的帖子
刚刚才发现两岸的行列观念相反, 请注意!楼主解决了, 就给齐程式与大伙分享吧!
[ 本帖最后由 ChaChing 于 2009-3-12 19:01 编辑 ] 是啊,这个行列竟然,概念相反。。。 supprise
回复 楼主 lqbtbs 的帖子
clear;clcx=;
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 编辑 ] 原来楼主问的是这种意思!?
本来还以为是图上有9个点, 互相之间的连接关系! 但如此z矩阵应该要对称才是!
行列概念是相反的, 也是昨晚才发现确定!
难怪以前有些帖总感觉明明对, 却被人认定是错的! 日後小心
好奇, 到底什麽工程问题?
[ 本帖最后由 ChaChing 于 2009-3-12 13:18 编辑 ]
歹事= =,俺忘了放隔壁牛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 编辑 ]
感谢sogooda大
其实sogooda画的也蛮清楚说, 加箭头会更好= =*......原来还可以这样画ㄚ, 又多了点思路了, 感恩ㄚ~
回复7楼ChaChing 的帖子
没啥工程问题啦= =||| , 俺也是着学生而已,搞不了工程~哈
有做几个问卷,跑跑关系图罢了
????行列相反?
这个例子.......俺在编的时候没怎么注意到说......误会啦
[ 本帖最后由 ChaChing 于 2009-3-12 19:05 编辑 ] 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 编辑 ]
回复 10楼 ydlcsu 的帖子
挖~更精简开了眼界 在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 编辑 ] 客气, 那来的启发!
本来以为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]