【问题标题】:How to plot all the matrix elements in matlab whitout knowing the size?如何在不知道大小的情况下绘制matlab中的所有矩阵元素?
【发布时间】:2019-09-21 04:42:57
【问题描述】:

假设有下一个矩阵

A = [ 1 2 2 ;
      1 2 3 ;
      2 3 4 ;
      3 4 5 ;
      4 4 6 ;
      1 11 12]

我尝试使用 quiver3 以下面的方式绘制行:

quiver3(0,0,0,A(1:1),A(1:2),A(1:3),0);
quiver3(0,0,0,A(2:1),A(2:2),A(2:3),0);
quiver3(0,0,0,A(3:1),A(3:2),A(3:3),0);

以此类推,直到最后一行,但是如何为矩阵的每一行应用 quiver3 而不是每行一行? 此外,矩阵的大小并不总是相同,因此每行执行一个命令会产生一些行而不绘制有时,并且可能没有足够的行来绘制其他行。
(示例:提供的矩阵有 6 行,所以我制作了 6 个 quiver3 表达式,但稍后如果矩阵只有 3 行,它会给我一个错误,如果稍后它有 8 行,那么将有 2 个向量/行不是绘制)。
我猜它与范围和网格网格运算符有关,但我看不出如何。

【问题讨论】:

  • 你显示的代码错误,A的索引不正确。我不知道你希望这段代码做什么,但它可能不会这样做
  • 想要的输出到底是什么?一堆来自原点的向量?

标签: matlab user-interface matrix linear-algebra


【解决方案1】:

如果您的矩阵AN 行,其中每一行存储要传递给quiver3[u v w] 分量,那么您可以在一次调用quiver3 中绘制所有N 箭头,前提是您确保所有输入参数的大小相同。如果您从原点开始绘制所有它们,那么您必须创建一个由零组成的 N-by-1 向量以用于您的 xyz 输入:

A = [1 2 2;
     1 2 3;
     2 3 4;
     3 4 5;
     4 4 6;
     1 11 12];
z = zeros(size(A, 1), 1);
quiver3(z, z, z, A(:, 1), A(:, 2), A(:, 3), 0);

注意indexing 语法,我曾经将A 拆分为列以传递给quiver3。这是给定样本数据的结果图:

【讨论】:

    猜你喜欢
    • 2022-11-01
    • 2019-06-18
    • 1970-01-01
    • 1970-01-01
    • 2017-05-01
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    • 2020-03-13
    相关资源
    最近更新 更多