箭头matlab
以下是封装好的 MATLAB 函数,用于根据向量坐标绘制箭头图形。函数支持从原点出发的向量或自定义起点和终点的向量,并提供了灵活的绘图选项。
封装函数代码
function plotVectors(start_points, end_points, options)
% plotVectors - 绘制向量箭头图
%
% 语法:
% plotVectors(start_points, end_points)
% plotVectors(start_points, end_points, options)
%
% 输入参数:
% start_points - 向量起点坐标,大小为 [n, 2] 的矩阵,每行表示一个向量的起点 (x, y)
% end_points - 向量终点坐标,大小为 [n, 2] 的矩阵,每行表示一个向量的终点 (x, y)
% options - 可选参数结构体,包含以下字段:
% * scale : 箭头缩放因子(默认 1)
% * color : 箭头颜色(默认 'b',蓝色)
% * lineWidth : 箭头线宽(默认 1.5)
% * maxHeadSize : 箭头头部大小(默认 0.5)
% * gridOn : 是否显示网格(默认 true)
% * axisEqual : 是否设置坐标轴等比例(默认 true)
% * title : 图形标题(默认 '向量箭头图')
% * xlabel : X轴标签(默认 'X轴')
% * ylabel : Y轴标签(默认 'Y轴')
%
% 示例:
% start_points = [0, 0; 2, 1; -1, 3];
% end_points = [3, 4; 5, 5; 0, 6];
% options.color = 'r';
% options.lineWidth = 2;
% plotVectors(start_points, end_points, options);
% 默认参数
defaultOptions.scale = 1;
defaultOptions.color = 'b';
defaultOptions.lineWidth = 1.5;
defaultOptions.maxHeadSize = 0.5;
defaultOptions.gridOn = true;
defaultOptions.axisEqual = true;
defaultOptions.title = '向量箭头图';
defaultOptions.xlabel = 'X轴';
defaultOptions.ylabel = 'Y轴';
% 合并用户选项与默认选项
if nargin < 3
options = defaultOptions;
else
options = mergeStructs(defaultOptions, options);
end
% 计算向量分量
U = end_points(:, 1) - start_points(:, 1); % X方向分量
V = end_points(:, 2) - start_points(:, 2); % Y方向分量
% 提取起点坐标
X = start_points(:, 1);
Y = start_points(:, 2);
% 绘制箭头
figure;
quiver(X, Y, U, V, options.scale, ...
'LineWidth', options.lineWidth, ...
'Color', options.color, ...
'MaxHeadSize', options.maxHeadSize, ...
'AutoScale', 'off');
% 设置图形属性
if options.gridOn
grid on;
end
if options.axisEqual
axis equal;
end
title(options.title);
xlabel(options.xlabel);
ylabel(options.ylabel);
end
function mergedStruct = mergeStructs(defaultStruct, userStruct)
% mergeStructs - 合并两个结构体,用户结构体优先
mergedStruct = defaultStruct;
fields = fieldnames(userStruct);
for i = 1:length(fields)
mergedStruct.(fields{i}) = userStruct.(fields{i});
end
end
函数使用示例
示例 1:从原点出发的向量
% 定义向量终点坐标
end_points = [1, 2; 3, 4; -2, 1];
% 起点为原点
start_points = zeros(size(end_points));
% 调用函数绘制向量
plotVectors(start_points, end_points);
示例 2:自定义起点和终点的向量
% 定义向量起点和终点
start_points = [0, 0; 2, 1; -1, 3];
end_points = [3, 4; 5, 5; 0, 6];
% 设置绘图选项
options.color = 'r';
options.lineWidth = 2;
options.title = '自定义起点的向量箭头图';
% 调用函数绘制向量
plotVectors(start_points, end_points, options);
输出效果
-
示例 1:从原点出发的向量
-
示例 2:自定义起点的向量
函数特点
- 灵活性:支持自定义起点和终点,提供多种绘图选项。
- 易用性:通过
options
结构体传递参数,简化调用。 - 可扩展性:可根据需要扩展更多绘图选项(如颜色映射、图例等)。
注意事项
- 输入矩阵大小:
start_points
和end_points
必须为[n, 2]
的矩阵。 - 箭头缩放:若箭头过小或过大,调整
options.scale
参数。 - 三维向量:若需绘制三维向量,可扩展函数支持
quiver3
。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通