声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 16909|回复: 10

[绘图技巧] 求助:matlab中如何画点和画线

[复制链接]
发表于 2006-9-22 08:45 | 显示全部楼层 |阅读模式

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

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

x
我想实现一个功能,即用鼠标在图上左击一下,就能画一个点,画好点后,并能以这些点中的任意两点做为一条线段的始末点进行画线,请各位大侠指点一下,先谢谢了!!
回复
分享到:

使用道具 举报

发表于 2006-9-22 09:18 | 显示全部楼层

matlab中如何画点和画线

如果单纯是为了实现上述功能,可以直接用AutoCAD画图.
 楼主| 发表于 2006-9-22 09:32 | 显示全部楼层
原帖由 xjzuo 于 2006-9-22 09:18 发表
如果单纯是为了实现上述功能,可以直接用AutoCAD画图.

首先,谢谢你的意见
我也不是单纯用了实现上述功能,那只是一个刚开始的准备工作,并且点和线的数目不多,我想知道在matlab中是如何实现的
发表于 2006-9-22 09:35 | 显示全部楼层

matlab中如何画点和画线

哦.
一般点和线不多时,我是直接用坐标点画的.
 楼主| 发表于 2006-9-22 09:49 | 显示全部楼层
原帖由 xjzuo 于 2006-9-22 09:35 发表
哦.
一般点和线不多时,我是直接用坐标点画的.

我只是想画个示意图,直接用坐标画很不方便的,因为换几个点,几条线的话会好麻烦的,有时候也比较难确定具体的坐标是多少
呵呵,不知道我的意思表达的明白了没有
发表于 2006-9-22 09:59 | 显示全部楼层
利用ginput函数可以画点,至于画线,是画出所有线段,还是用户任意选择两点画出一条线段?
 楼主| 发表于 2006-9-22 10:38 | 显示全部楼层
原帖由 eight 于 2006-9-22 09:59 发表
利用ginput函数可以画点,至于画线,是画出所有线段,还是用户任意选择两点画出一条线段?

谢谢eight
线是用户任意选择两点画出一条线段
发表于 2006-9-22 11:32 | 显示全部楼层
写了一个简单的,看看是否你要的效果:(重新修改了一下)

h = figure; axis([0 10 0 10]); hold on
button = 1; n = 0; xy_org = [];
while button == 1  % 输入数据点,以右键作结
  [xi,yi,button] = ginput(1);  plot(xi, yi, 'r+');
    n = n + 1; xy_org(:,n) = [xi;yi];
end
pause;% 输入完毕后按任意键继续

button = 1; m = 0; s = zeros(1,2); pre_m = 0;
while button == 1 % 选择数据点,以右键作结
    while button == 1 && m < 2
        [xi,yi,button] = ginput(1);
        [d, ind] = min(sum((repmat([xi;yi],1,n) - xy_org).^2)); % 求各数据点与当前鼠标点的最小距离
        if d <= 0.1
            if pre_m ~= 0 % 之前画过直线,要刷新一下屏幕
                plot(xy_org(1,s(:)), xy_org(2,s(:)), 'wo');
                plot(xy_org(1,s(:)), xy_org(2,s(:)), 'w');
                plot(xy_org(1,s(:)), xy_org(2,s(:)), 'r+');
                pre_m = 0;
            end
            plot(xy_org(1,ind), xy_org(2,ind), 'bo');
            m = m + 1; s(m) = ind;
        end
    end
    if m == 1
        plot(xy_org(1,s(m)), xy_org(2,s(m)), 'wo');
        plot(xy_org(1,s(m)), xy_org(2,s(m)), 'r+');
    elseif m == 2
        plot(xy_org(1,s(:)),xy_org(2,s(:)), 'g');
    end
    pre_m = m; m = 0;
end
hold off;

[ 本帖最后由 eight 于 2006-9-22 14:29 编辑 ]

plotline.m

1.17 KB, 下载次数: 2

评分

1

查看全部评分

 楼主| 发表于 2006-9-22 11:40 | 显示全部楼层
太感谢了!!!
我先研究一下你写的程序
发表于 2010-11-19 06:02 | 显示全部楼层
不错,原来matlab还有这功能
发表于 2010-11-25 21:49 | 显示全部楼层
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-9-21 19:06 , Processed in 0.074429 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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