在特殊情况下创建一个更大的矩阵

YSF*_*YSF -6 matlab matrix

我有两个向量:

A=[1 2 3 4]
B=[3 5 3 5]
Run Code Online (Sandbox Code Playgroud)

我想从这些向量中找到一个矩阵,如下所示:

你可以假设cplot matrix,其中x轴是Ay-axisB:

c =
 0     4     0     4
 3     0     3     0
 0     0     0     0
 0     0     0     0
Run Code Online (Sandbox Code Playgroud)

要么:

 c1=
 0     1     0     1
 1     0     1     0
 0     0     0     0
 0     0     0     0
Run Code Online (Sandbox Code Playgroud)

我的问题是如何自动创建它,因为我有大的向量.

Eit*_*n T 5

我假设AB是坐标,你想"拉拢"矩阵形式的情节,所以试试这个:

c = flipud(full(sparse(B, A, B)));
Run Code Online (Sandbox Code Playgroud)

我添加flipud了向上调整y轴的正方向.

或者,您可以使用以下方法获取二进制矩阵:

c1 = flipud(full(sparse(B, A, ones(size(A)))));
Run Code Online (Sandbox Code Playgroud)

重要提示:要使此解决方案正常工作,A并且B 必须包含正整数值.尝试"绘制"具有非正或非整数位置的矩阵是没有意义的.

A = 1:4; B = [3, 4, 3, 4];   
c = flipud(full(sparse(B, A, B)))
c1 = flipud(full(sparse(B, A, ones(size(A)))))
Run Code Online (Sandbox Code Playgroud)

这导致:

c =
     0     4     0     4
     3     0     3     0
     0     0     0     0
     0     0     0     0

c1 =
     0     1     0     1
     1     0     1     0
     0     0     0     0
     0     0     0     0
Run Code Online (Sandbox Code Playgroud)

  • +1,对于反转徽章尝试=) (3认同)