在matlab中由两个不同的矩阵生成绘图矩阵

在matlab中由两个不同的矩阵生成绘图矩阵,matlab,matrix,plot,Matlab,Matrix,Plot,我有两个矩阵(5×1),比如A=[5行,1列]和B=[5行,1列]如果我绘制(A,B),我将创建一个大矩阵C=[5行,5列]wright 现在我想创建一个大型矩阵,而不绘制它。我直接要这个矩阵。非常感谢。 例如A=[12345]和B=[342214] c= 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 这应该起作用: a =

我有两个矩阵(5×1),比如A=[5行,1列]和B=[5行,1列]如果我绘制(A,B),我将创建一个大矩阵C=[5行,5列]wright

现在我想创建一个大型矩阵,而不绘制它。我直接要这个矩阵。非常感谢。 例如
A=[12345]
B=[342214]

c=

 0     1     0     0     0
 1     0     0     0     1
 0     0     1     0     0
 0     0     0     1     0
这应该起作用:

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)));

嗨,很多人都想知道你的反应,但我得到了这个信息:???使用==>稀疏索引时出错,超出了矩阵维度。错误==>测试在3 c=flipud(稀疏(B,A,1,4,5));它对我有用。。。你试过把我的答案直接复制到Matlab中吗?我提供的代码只有在:A是1:n矩阵([1 2 3…n])时才有效。试试下面的版本(使用max()等),我已经更新了一点。它只适用于整数和正数。但我的实矩阵包含零和负数。。这就是现在的错误(稀疏矩阵大小必须是小于计算机定义的MAXSIZE的非负整数。有关详细信息,请使用帮助计算机。)在这种情况下,您需要决定几件事:如何处理负数和零?由于不能将这些值用作矩阵的索引,因此在翻转矩阵之前,可能需要“移动”矩阵,使最小值位于位置(1,1)。这将很难知道原点在哪里,但至少结构是正确的。好的,我可以通过添加abs(-20)来管理负数。但是如果我有例如1.782!!如果我使用四舍五入(1.782),我的整个矩阵数将发生变化。这是不受欢迎的事情:(.有什么办法可以避免吗?!