【问题标题】:How to Plot a unit vector in matlab如何在matlab中绘制单位向量
【发布时间】:2020-12-19 00:06:25
【问题描述】:

我正在尝试创建 2 个随机点,这些点具有以随机方向传递它们的向量。示例如下所示

我尝试创建 2 个随机点和 2 个随机单位向量,并使用函数 quiver 创建图形,

c = rand(1,2);
d = rand(1,2);

A = rand(2,1)-0.5;
B = rand(2,1)-0.5;
u = A/norm(A);
v = B/norm(B);

figure(3)
scatter(c,d)
quiver(c,d,u,v)

quiver 函数并没有真正的帮助,我得到的只是图表上的 2 个点。 任何帮助表示赞赏。

【问题讨论】:

  • 如果 c 和 d 的尺寸为 1x2,但 A、B 的尺寸为 2x1,则:“使用 quiver 时出错(第 44 行)X 的大小必须与 U 的大小或你。”如果修复它(“A = rand(1,2)-0.5; B = rand(1,2)-0.5;”),那么你会得到一张有2个向量的图片
  • 这能回答你的问题吗? quiver(c,d,u.',v.',0),如上所述,您的 uv 大小错误,您可以先将它们转置或创建为 1*2。然后使用0 作为 quiver 的缩放比例。

标签: matlab vector plot random


【解决方案1】:

您还需要在添加矢量图之前保留散点图。

theta = rand( 1, 2) * 2 * pi;

x1 = c(1) + 0.5 * [-1, 1] * cos( theta( 1));
y1 = c(2) + 0.5 * [-1, 1] * sin( theta( 1));
x2 = d(1) + 0.5 * [-1, 1] * cos( theta( 2));
y2 = d(2) + 0.5 * [-1, 1] * sin( theta( 2));

figure;
hold on;
plot( x1, y1, 'r')
plot( x2, y2, 'b')
plot( c(1), c(2), 'ro', 'MarkerFaceColor', 'r');
plot( d(1), d(2), 'bo', 'MarkerFaceColor', 'b');

xlim = get( gca, 'XLim');
ylim = get( gca, 'YLim');

lo = min( [xlim(1), ylim(1)]);
hi = max( [xlim(2), ylim(2)]);
axis equal
set( gca, 'XLim', [lo, hi], 'YLim', [lo, hi]);

【讨论】:

    猜你喜欢
    • 2021-06-12
    • 2011-07-03
    • 1970-01-01
    • 2013-07-23
    • 2014-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多