【问题标题】:generate plot matrix from two different matrices in matlab [duplicate]从matlab中的两个不同矩阵生成绘图矩阵[重复]
【发布时间】:2013-05-11 08:42:51
【问题描述】:

我有两个矩阵 (5_by_1),说 A=[5 行,1 列] 和 B=[5 行,1 列] 如果我做 plot(A,B),我将创建一个大矩阵 C=[ 5 行 5 列] 对吗?!

现在我想创建这个大矩阵而不绘制它。我直接想要这个矩阵。谢谢你。 例如A=[1 2 3 4 5 ]B=[3 4 2 1 4]

c=

 0     1     0     0     0
 1     0     0     0     1
 0     0     1     0     0
 0     0     0     1     0

【问题讨论】:

    标签: matlab matrix plot


    【解决方案1】:

    这应该可行:

    a = [1 2 3 4 5];
    b = [3 4 2 1 4];
    
    c = flipud(sparse(b,a,1,4,5));
    

    如果你想看完整的c:

    full(c)
    

    或者如果您有更大的版本:

    c = flipud(sparse(b,a,1,max(b),max(a)));
    

    flipud 命令是将矩阵倒置。

    希望这会有所帮助 =)

    编辑:

    “移动”矩阵,使你的最小值在 (1,1) 中(在你翻转它之前)。结构是正确的,但起源不容易发现。

    a_1 = floor(a - min(a)) + 1;  % floor if you don't have integers.
    b_1 = floor(b - min(b)) + 1;
    
    c = flipud(sparse(b_1,a_1,1,max(b_1),max(a_1)));
    

    【讨论】:

    • 嗨,很多 thaaaaaaaaaaaaaans 等你回复,但我收到了这条消息:???使用 ==> 稀疏索引的错误超出了矩阵维度。 ==> 测试中的错误 3 c=flipud(sparse(B,A,1,4,5));
    • 它对我有用...您是否尝试将我的答案直接复制到 Matlab 中?我提供的代码仅在以下情况下有效:A 是 1:n 矩阵 ([1 2 3...n])。试试下面的版本(使用 max() 等)我已经更新了一点。
    • 它仅适用于整数和正数。但我的实数矩阵包含零和负数..这是现在的错误(稀疏矩阵大小必须是小于计算机定义的 MAXSIZE 的非负整数。有关更多详细信息,请使用帮助计算机。)
    • 在这种情况下,您需要决定几件事:您想如何处理负数和零?由于您不能将它们用作矩阵的索引,因此您可能希望在翻转矩阵之前“移动”矩阵,以便最低值位于 (1,1) 位置。这会让人很难知道原点在哪里,但至少结构是正确的。
    • 好的,我可以通过添加 abs(-20) 来管理我的负数。但如果我有例如 1.782 !如果我使用 round(1.782) 我的整个矩阵数字会改变。那是不受欢迎的事情:(。有什么办法可以避免吗?!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多