我是Octave/Matlab的新手,所以到目前爲止我知道,您可以應用矩陣運算(如*
)或單元格運算(如.*
)。Matlab/Octave支持對矩陣切片進行操作嗎?
現在我有這兩種模式之間存在的問題。
例如(這只是示例)我有一個矩陣(10,10)和一個向量(10,1)。我想在切片中使用這個矩陣(在這種情況下是列切片)並向它們添加矢量。因此,將矢量添加到第一列,將矢量添加到第二列,....,將矢量添加到最後一列。當然在結果獲取矩陣(10,10)。
到目前爲止,我想出了兩種方法:
手動遍歷列,並添加矢量
重複的載體,然後加入全部重複矢量(所以現在矩陣真的)到矩陣
第二個使用矢量化方法,但是消耗很多內存,在第一種情況下,沒有矢量化方法(手動循環),但內存不會被過度使用。
問題 - 有沒有一些不錯的第三種方式,切片模式?我可以說,將矩陣視爲切片,向切片添加矢量,並放棄這些視圖,並像往常一樣對待矩陣?
sparse(diag(y))仍然構建完整的矩陣diag(y)。如果你真的想減少內存使用量,請使用:sparse(1:10,1:10,y) – 2012-04-26 11:12:49
很好的答案,非常感謝! – greenoldman 2012-04-26 11:50:21
我的榮幸。 :) – learnvst 2012-04-26 13:01:27