当前位置: 首页 > ai >正文

【matlab技巧】通过手绘的方法设计二维运动轨迹,附MATLAB程序

在这里插入图片描述

代码提供了一种直观的方式来使用鼠标在图形窗口中绘制线条,同时能够记录并显示用户绘制的轨迹坐标。用户通过左键点击绘制点,右键点击结束绘制,适合用于简单的图形交互和数据可视化。

文章目录

  • 代码作用
  • 运行
  • MATLAB源代码
  • 代码详解

代码作用

这段 MATLAB 代码实现了一个简单的图形绘制工具,用户可以通过鼠标在图形窗口中绘制线条。

运行

运行程序后,在出现的窗口上使用鼠标左击绘制需要的轨迹:

在这里插入图片描述

右击完成绘制后,命令行会输出轨迹中各点的坐标:

在这里插入图片描述

同时变量x和y也会存储上述数据。

MATLAB源代码

clc;clear;close all;
% 创建新图形窗口
figure;
axis([0 10 0 10]); % 设置坐标轴范围
grid on;
title('用鼠标左击绘图,右击结束绘制');% 初始化坐标数组
x = [];
y = [];% 鼠标绘图
hold on;
while true[xi, yi, button] = ginput(1); % 获取鼠标点击的一个点if isempty(button) || button == 1 % 左键点击x = [x; xi]; % 存储 x 坐标y = [y; yi]; % 存储 y 坐标plot(x, y, 'b-', 'LineWidth', 2); % 绘制线elseif button == 3 % 右键点击结束break; % 退出循环end
end
hold off;% 显示轨迹的 XY 坐标
disp('轨迹的 XY 坐标:');
disp([x, y]); % 打印坐标

代码详解

  1. 创建图形窗口

    • figure;:打开一个新的图形窗口。
  2. 设置坐标轴

    • axis([0 10 0 10]);:设置坐标轴的范围为 x 轴和 y 轴都在 0 到 10 之间。
    • grid on;:启用网格线,方便用户查看坐标。
  3. 设置标题

    • title('用鼠标左击绘图,右击结束绘制');:为图形添加标题,提示用户如何使用该工具。
  4. 初始化坐标数组

    • x = [];y = [];:初始化两个空数组,用于存储鼠标点击的 x 和 y 坐标。
  5. 绘图循环

    • hold on;:允许在同一图形上绘制多条线。
    • while true:进入一个无限循环,等待用户输入。
      • [xi, yi, button] = ginput(1);:使用 ginput 函数获取用户点击的鼠标坐标(xi, yi)和按钮状态(button)。
      • if isempty(button) || button == 1:检查是否左键点击(button == 1)。
        • x = [x; xi];y = [y; yi];:将新点击的坐标添加到数组中。
        • plot(x, y, 'b-', 'LineWidth', 2);:绘制当前的线条,使用蓝色(‘b-’)和线宽为 2。
      • elseif button == 3:检测右键点击(button == 3)。
        • break;:退出循环,结束绘制。
  6. 结束绘制

    • hold off;:停止在同一图形上绘制。
  7. 显示坐标

    • disp('轨迹的 XY 坐标:');:打印提示信息。
    • disp([x, y]);:输出用户绘制的所有坐标。

如需帮助,或有导航、定位滤波相关的代码定制需求,请点击下方卡片联系作者

http://www.xdnf.cn/news/6816.html

相关文章:

  • 机器学习 day04
  • 线性dp练习(碱基配对)
  • 【OpenCV】基本数据类型及常见图像模式
  • java中的循环结构
  • MySQL——4、表的约束
  • 【Java】应对高并发的思路
  • 使用Spring Boot和Spring Security构建安全的RESTful API
  • 第8讲、Multi-Head Attention 的核心机制与实现细节
  • Github 2025-05-17 Rust开源项目日报 Top10
  • Bitmap原理及Hive去重方式对比
  • 网络流量分析 | Zeek(上)
  • 消息的简介
  • jvm安全点(二)openjdk17 c++源码垃圾回收安全点信号函数处理线程阻塞
  • IntraWeb 16.0.2 + Bootstrap 4 居中布局实战(附源码+效果图)
  • 常见的实时通信技术(轮询、sse、websocket、webhooks)
  • pnpm 与 npm 的核心区别
  • 单细胞转录组(4)Cell Ranger
  • nodejs快速入门到精通1
  • 2025年PMP 学习十七 第11章 项目风险管理 (11.1~11.4)
  • 从神经架构到万物自动化的 AI 革命:解码深度学习驱动的智能自动化新范式
  • 学习笔记:黑马程序员JavaWeb开发教程(2025.4.7)
  • jvm安全点(三)openjdk17 c++源码垃圾回收之安全点结束,唤醒线程
  • WPS PPT设置默认文本框
  • 三层固定实体架构:高效实现图上的检索增强生成(RAG)
  • CANoe CAPL TCP DoIP通信问题
  • 使用 Kotlin 和 Jetpack Compose 开发 Wear OS 应用的完整指南
  • 【Linux笔记】nfs网络文件系统与autofs(nfsdata、autofs、autofs.conf、auto.master)
  • 【DAY21】 常见的降维算法
  • 目标跟踪相关综述文章
  • 25、DeepSeek-R1论文笔记