我想选择索引在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
答案 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)
C = vec([3 4 5 6 7])
B = [A[y,i] for i in C,y in 1:5]
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