2012-03-14 37 views
2

如果我在Ruby中有一個現有的Matrix,如何添加一列或一行新數據?如何在Ruby中將列和行添加到Matrix?

我想要做的是這樣的:

require 'Matrix' 
my_matrix = Matrix.diagonal(1,2,3) 
my_matrix.append_row!([3,2,1]) 
my_matrix.append_column!([3,2,1]) 

有沒有辦法做到這一點?

回答

4

由於在數學意義上這樣做不是(據我所知)一個有效的矩陣運算,所以沒有什麼可以做到這一點。你可以儘管創建一個新的Matrix:

m = Matrix.diagonal(1, 2, 3) 
#=> Matrix[[1, 0, 0], [0, 2, 0], [0, 0, 3]] 

Matrix.columns(m.to_a << [4, 5, 6]) 
#=> Matrix[[1, 0, 0, 4], [0, 2, 0, 5], [0, 0, 3, 6]] 

Matrix.rows(m.to_a << [4, 5, 6]) 
#=> Matrix[[1, 0, 0], [0, 2, 0], [0, 0, 3], [4, 5, 6]] 

它使用columnsrows通過添加新的陣列 原來的矩陣的數組表示創建一個新的矩陣。

+3

小建議:列添加示例工作,因爲矩陣是對角對稱的。我相信你會希望'Matrix.columns(m.transpose.to_a << [4,5,6])'添加一列而不重新排序項目。 – Billiam 2013-09-02 01:40:47

相關問題