matlab - 如何使用 matlab 正确绘制矢量线性方程?

我对 Matlab 有疑问。我正在尝试显示/绘制这个由向量组成的线性方程,但它不起作用 - 我尝试了很多不同的方法。

对于“向量线性方程”,我的意思是这样的(图片):

我已经编写了以下代码来执行此操作,但它没有绘制任何内容:

function VectorEq(v1, v2)
    t = linspace(-10*pi, 10*pi);
    x = v1(:,1) + t(:,1)*v2(:,1);
    y = v1(:,2) + t(:,2)*v2(:,2);
    z = v1(:,3) + t(:,3)*v2(:,3);
    plot3(x,y,z);
end

我在这里错过了什么? :/

最佳答案

在直线方程的向量形式中,t 不是向量,它是与方向向量相乘的标量。对于您的问题,您想找到 t

的每个值的线性方程的值

为此,您可以使用 Matlab 的自动广播数组形状。例如:

v2 = [1; 2; 3];
t = linspace(0, 1, 5);
v2 * t

这给出:

ans =

        0   0.2500   0.5000   0.7500   1.0000
        0   0.5000   1.0000   1.5000   2.0000
        0   0.7500   1.5000   2.2500   3.0000

请注意,答案中的第 j 列对应于 t 的第 j 元素。

这样的矩阵可以添加到列向量中,也可以使用广播。例如:

v1 = [11; 12; 13];
v1 + v2 * t

给予

ans =

   11.000   11.250   11.500   11.750   12.000
   12.000   12.500   13.000   13.500   14.000
   13.000   13.750   14.500   15.250   16.000

这些行为您提供了 x、y 和 z 坐标的值。

因此,将您的问题向量化并快速获得解决方案:

function VectorEq(v1, v2)
    t = linspace(-10*pi, 10*pi);
    f = v1(:) + v2(:) * t;
    % v1(:) ensures it's a column vector
    plot3(f(1, :), f(2, :), f(3, :));
end

v1 = [1; 2; 3]v2 = [0.1; 0.2; 0.3],我们得到蓝线:

黑点和向量是点v1v2的单位向量:

v1 = [1; 2; 3]; v2 = v1 / 10;

uv2 = v2 / norm(v2);

VectorEq(v1, v2);
hold on;
plot3(v1(1), v1(2), v1(3), '.k');
quiver3(v1(1), v1(2), v1(3), uv2(1), uv2(2), uv2(3), 'k');

https://stackoverflow.com/questions/67375567/

相关文章:

javascript - 扩展 jQuery 的类不是其自身的实例

GitHub - 当非默认分支与 main 合并时,PR 链接问题不会关闭

git - 如何在 GIT 中查看暂存区中的文件内容?

python - 枚举二进制变量值的所有可能组合

python - PyCharm 看不到项目中的文件

c++ - 使用具有非 constexpr 值的 int 模板函数

r - 将字符串拆分为单词并分配给新列

powerbi - Multi-Tenancy 场景下如何访问power BI Service

python - 仅当 "Lossless"时才转换为整数?

javascript - 选择选项后如何取消突出显示选择元素?