我阅读了有关MATLAB中正确使用内存的有趣文章。这里是:官方网站上的链接在这里我看到示例:
如果数据包含许多零,请考虑使用稀疏数组,该数组仅存储非零元素。以下示例比较了存储主要为零的数组所需的空间:
A = diag(1e3,1e3); % Full matrix with ones on the diagonal
As = sparse(A) % Sparse matrix with only nonzero elements
我试图在我的代码中实现它,并发现有趣的时刻:A = diag(1e3,1e3)
不创建对角线上有矩阵的矩阵!它仅使用一个非零元素创建零矩阵:
clear A
A = diag(1e3,1e3);
find(A);
ans =
1001001
A(1001001)
ans =
1000
好的。我阅读了有关diag
帮助中的功能的信息,并看到以下内容:
D = diag(v)返回一个平方对角矩阵,其中向量v的元素位于主对角线上。
好的!因此,如果v
由1个元素组成,它实际上不会创建对角矩阵!帮助时出错吗?但。还有一个问题:为什么它会这样工作?
diag(5,5)
ans =
0 0 0 0 0 5
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
我希望得到5
值(1,1)或(5,5)的矩阵5x5 。为什么创建6x6矩阵,为什么5
是(1,6)元素?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句