如何在Julia中将数组转换为矩阵

时间:2018-11-13 17:44:29

标签: julia

我想选择索引在C中的A(5 * 7)的col并计算其倒数。但是,这里的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

2 个答案:

答案 0 :(得分:4)

或者,根据“极限比”的建议,您可以简单地写:

B = A[:, C]

(为此,C应该是列向量)

在这种情况下,最好将C定义为:

C = 3:7

C = [3,4,5,6,7]

编辑:在您的代码中:

C = [3 4 5 6 7]'

是5x1矩阵,不是向量。为了将其转换为向量,请写vec(C)。因此A[:, vec(C)]将为您提供一个矩阵。

答案 1 :(得分:1)

    未定义。什么事?
  1. B通过以下目标向量的切片工作:C = vec([3 4 5 6 7])
  2. 然后创建一个尺寸为5x5的5x5数组:B = [A[y,i] for i in C,y in 1:5]
  3. 将矩阵B(在此示例中与其本身相同)乘以(小)b即可得到逆。 我的REPL:
julia> B = [A[y,i] for i in C,y in 1:5]
5×5 Array{Float64,2}:
 1.0  0.0  0.0  0.0  0.0
 0.0  1.0  0.0  0.0  0.0
 0.0  0.0  1.0  0.0  0.0
 0.0  0.0  0.0  1.0  0.0
 0.0  0.0  0.0  0.0  1.0

julia> x=inv(B)
5×5 Array{Float64,2}:
 1.0  0.0  0.0  0.0  0.0
 0.0  1.0  0.0  0.0  0.0
 0.0  0.0  1.0  0.0  0.0
 0.0  0.0  0.0  1.0  0.0
 0.0  0.0  0.0  0.0  1.0