我是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