如何在Julia中实现数组到矩阵的转换

如何在Julia中实现数组到矩阵的转换,julia,Julia,我想选择一个(5*7)的列,它的索引是C,然后计算它的倒数。然而,这里的B是5*1数组,而不是正方形矩阵。我怎样才能做到呢 A = [1 2 1 0 0 0 0; 1/3 1 0 1 0 0 0; 4 1 0 0 1 0 0; -4 2 0 0 0 1 0; -6 2 0 0 0 0 1] C = [3 4 5 6 7]' B = [A[:,i] for i in C] x = inv(B)*b b未定义。这是什么 B通过预定切片的向量工作:C=vec

我想选择一个(5*7)的列,它的索引是C,然后计算它的倒数。然而,这里的B是5*1数组,而不是正方形矩阵。我怎样才能做到呢

A = [1 2 1 0 0 0 0;
    1/3 1 0 1 0 0 0;
     4  1 0 0 1 0 0;
     -4 2 0 0 0 1 0;
     -6 2 0 0 0 0 1]
C = [3 4 5 6 7]'

B = [A[:,i] for i in C]
x = inv(B)*b
  • b未定义。这是什么
  • B通过预定切片的向量工作:
    C=vec([3 4 5 6 7])
  • 然后创建一个5x5数组,其尺寸为5x5:
    B=[a[y,i]表示C中的i,y表示1:5]
  • 将矩阵
    B
    (与本例中的矩阵本身相同)乘以(小)
    B
    应该可以工作。 答复:

  • 或者,根据Ultima Ratio的建议,您可以简单地写下:

    B = A[:, C]
    
    (要使其正常工作,
    C
    应为列向量)

    此外,在这种情况下,最好简单地将
    C
    定义为:

    C = 3:7
    

    编辑:在代码中:

    C = [3 4 5 6 7]'
    

    是5x1矩阵而不是向量。要将其转换为向量,请写入
    vec(C)
    。所以
    A[:,vec(C)]
    会给你一个矩阵。

    b只是一个向量。谢谢。它起作用了!但是B=[A[y:,i]代表C中的i,y代表1:5]代表3。对于C中的i,应为B=[A[y,i],对于1:5中的y,仅为A:“在这种情况下,B将成为三维数组。有没有把它转换成二维的好方法?朱莉娅:对不起,我会让我的回答更准确
    C
    必须是一个列向量(我添加了一个编辑)。是的,它可以工作。很有趣。我必须检查向量和数组之间的区别,区别在于矩阵有两个维度。他们两人都“进入”了指数。如果数组具有维度
    5x1
    ,则值
    5
    作为第二个索引,值
    1
    作为第三个索引。这就是为什么在编写
    a[:,C]
    时会得到一个三维数组,而第三维数组的长度为1。
    C = [3,4,5,6,7]
    
    C = [3 4 5 6 7]'