% 创建初始曲线 x = linspace(0, 3000, 100); y1 = linspace(0, 3500, 100); y2 = linspace(0, 3500, 100); y3 = linspace(0, 3500, 100); y4 = linspace(0, 3500, 100); % 绘制初始曲线 figure; h1 = plot(x, y1); hold on; h2 = plot(x, y2); h3 = plot(x, y3); h4 = plot(x, y4); % 添加图例 legend('曲线1', '曲线2', '曲线3', '曲线4'); title('移动点以改变曲线形状'); xlabel('传感器切换次数'); ylabel('时间'); % 添加鼠标点击事件处理函数 set(h1, 'ButtonDownFcn', @(src, event) updateCurve(src, event, h1, y1)); set(h2, 'ButtonDownFcn', @(src, event) updateCurve(src, event, h2, y2)); set(h3, 'ButtonDownFcn', @(src, event) updateCurve(src, event, h3, y3)); set(h4, 'ButtonDownFcn', @(src, event) updateCurve(src, event, h4, y4)); % 鼠标点击事件处理函数 function updateCurve(src, event, h, y) % 鼠标点击并获取新点的位置 [clicked_x, clicked_y] = ginput(1); % 找到离点击位置最近的点的索引 [~, idx] = min(abs(h.XData - clicked_x)); % 更新该点的纵坐标为点击的纵坐标 y(idx) = clicked_y; % 更新曲线 set(h, 'YData', y); end
时间: 2024-04-11 21:30:43 浏览: 213
科赫雪花曲线的MATLAB编程实现.doc
这段代码是用MATLAB创建了一个图形界面,其中包含了四条曲线,并且可以通过鼠标点击来改变曲线的形状。在这个程序中,每条曲线都有一个对应的数据向量(y1、y2、y3、y4),通过点击曲线上的点,可以将该点的纵坐标更新为点击位置的纵坐标。
程序中的`plot`函数用于绘制曲线,`legend`函数用于添加图例,`title`函数用于设置标题,`xlabel`和`ylabel`函数用于设置坐标轴标签。通过为每条曲线对象设置`ButtonDownFcn`属性,将鼠标点击事件处理函数与相应的曲线关联起来。
鼠标点击事件处理函数`updateCurve`会在鼠标点击事件发生时被调用。它会获取点击位置的坐标,并找到离点击位置最近的点的索引。然后,将该点的纵坐标更新为点击位置的纵坐标,并使用`set`函数更新曲线对象的y坐标数据,以显示修改后的曲线。
希望这次能满足你的要求,如果还有其他问题,请随时提问。
阅读全文