声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2093|回复: 9

[绘图技巧] 为什么用PLOT点对点的连接不上呢

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

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

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

x
%一些同心圆中,每层呈现鱼鳞状,可是我用plot函数画时,点跟点之间联系不紧密,尤其是外层,请大家指正,谢谢
theta=linspace(0,2*pi,50); rad=1:1:11;
x=cos(theta)'*rad; y=sin(theta)'*rad;
plot(x,y); hold on; axis equal
for i=0:1:10
    for j=1:1:i+1
        plot([(i+1)*cos(j*pi/2/(i+2)),i*cos(j*pi/2/(i+1))],[(i+1)*sin(j*pi/2/(i+2)),i*sin(j*pi/2/(i+1))]);
        plot([i*cos(j*pi/2/(i+1)),(i+1)*cos((j+1)*pi/2/(i+2))],[(i+1)*sin(j*pi/2/(i+1)),(i+1)*sin((j+1)*pi/2/(i+2))]);
        hold on
    end
end
plot([-11,11],[0,0]); plot([0,0],[-11,11]); axis([-11,11,-11,11])

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

使用道具 举报

发表于 2009-3-23 08:12 | 显示全部楼层
早看过了, LZ的程序没报错, 但水平有限, 不清楚LZ的问题!?
发表于 2009-3-23 14:31 | 显示全部楼层

回复 楼主 娜慕 的帖子

你这个问题和matlab没关系啊。是画图用的公式有问题吧?

评分

1

查看全部评分

发表于 2009-3-24 10:02 | 显示全部楼层
個人水平專業有限, 建議樓主說清楚些, 並看下本版規則and加強發問題方式!
 楼主| 发表于 2009-4-2 10:00 | 显示全部楼层

有限元网格的表示矩阵

如图所示的有限元,我想用矩阵A表示有限元中节点的关系
A(i,i)=同节点i连接的节点数,也就是邻接节点数
A(i,j)=0(节点i与j不相连)或-1(节点i与j相连)
可是图中有几百个节点,而且每一层的点数不同,难道我得一个个地写吗,这不是体力劳动吗?
一想起要把循环用到矩阵中,我就木讷了,请大家指教,谢谢!

[ 本帖最后由 ChaChing 于 2009-4-2 20:49 编辑 ]
youxianyuan.jpg
 楼主| 发表于 2009-4-2 10:59 | 显示全部楼层

回复 地板 ChaChing 的帖子

我的意思是第一象限中横向的线用PLOT命令可以连接上,可是纵向的线为什么连接不上呢?
这个问题我后来解决了,我变了一下思路,就是把角度变了一下,既然纵向的线连接不山,我就用PI/2减去横向的角度,这样纵向的线也能连接上了。
估计是循环有问题
发表于 2009-4-2 11:19 | 显示全部楼层

回复 5楼 娜慕 的帖子

建议LZ给齐程式, 与大家分享
 楼主| 发表于 2009-4-2 19:33 | 显示全部楼层

回复 6楼 ChaChing 的帖子

呵呵,不好意思,忘了,经验不足,在此补过啦
theta=linspace(0,2*pi,50);
rad=1:1:11;
x=cos(theta)'*rad;
y=sin(theta)'*rad;
plot(x,y);
hold on
axis equal
for i=0:1:10 %循环算法画出有限元图
    for j=1:1:i+1
        plot([(i+1)*cos(j*pi/2/(i+2)),i*cos(j*pi/2/(i+1))],[(i+1)*sin(j*pi/2/(i+2)),i*sin(j*pi/2/(i+1))]); %画出第一象限中横向线
        plot([(i+1)*cos(pi-j*pi/2/(i+2)),i*cos(pi-j*pi/2/(i+1))],[(i+1)*sin(pi-j*pi/2/(i+2)),i*sin(pi-j*pi/2/(i+1))]); %画出第二象限中横向线
        plot([(i+1)*cos(pi+j*pi/2/(i+2)),i*cos(pi+j*pi/2/(i+1))],[(i+1)*sin(pi+j*pi/2/(i+2)),i*sin(pi+j*pi/2/(i+1))]); %画出第三象限中横向线
        plot([(i+1)*cos(-j*pi/2/(i+2)),i*cos(-j*pi/2/(i+1))],[(i+1)*sin(-j*pi/2/(i+2)),i*sin(-j*pi/2/(i+1))]); %画出第四象限中横向线
        plot([(i+1)*cos(pi/2-j*pi/2/(i+2)),i*cos(pi/2-j*pi/2/(i+1))],[(i+1)*sin(pi/2-j*pi/2/(i+2)),i*sin(pi/2-j*pi/2/(i+1))]); %画出第一象限中纵向线
        plot([(i+1)*cos(pi/2+j*pi/2/(i+2)),i*cos(pi/2+j*pi/2/(i+1))],[(i+1)*sin(pi/2+j*pi/2/(i+2)),i*sin(pi/2+j*pi/2/(i+1))]); %画出第二象限中纵向线
        plot([(i+1)*cos(3*pi/2-j*pi/2/(i+2)),i*cos(3*pi/2-j*pi/2/(i+1))],[(i+1)*sin(3*pi/2-j*pi/2/(i+2)),i*sin(3*pi/2-j*pi/2/(i+1))]); %画出第三象限中纵向线
        plot([(i+1)*cos(3*pi/2+j*pi/2/(i+2)),i*cos(3*pi/2+j*pi/2/(i+1))],[(i+1)*sin(3*pi/2+j*pi/2/(i+2)),i*sin(3*pi/2+j*pi/2/(i+1))]); %画出第四象限中纵向线
        hold on
    end
end

评分

1

查看全部评分

发表于 2009-4-2 20:37 | 显示全部楼层
LZ的图与另一帖不同!?
好奇画这个干嘛!? 目的为何?
还有直觉LZ程序上有改进空间!

[ 本帖最后由 ChaChing 于 2009-4-2 21:02 编辑 ]
 楼主| 发表于 2009-4-2 21:22 | 显示全部楼层

回复 8楼 ChaChing 的帖子

呵呵,实验室要用的,应该是有改进的空间,可是我不会~
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-12-29 23:04 , Processed in 0.072620 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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