首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MATLAB手动错误?

MATLAB手动错误?
EN

Stack Overflow用户
提问于 2015-11-25 14:28:17
回答 3查看 77关注 0票数 2

我在MATLAB中读到了关于正确使用内存的有趣文章。这里是:官方网站链接,这里我看到了一个例子:

如果数据包含许多零,请考虑使用稀疏数组,该数组只存储非零元素。下面的示例比较存储主要为零的数组所需的空间:

代码语言:javascript
复制
A = diag(1e3,1e3);    % Full matrix with ones on the diagonal
As = sparse(A)        % Sparse matrix with only nonzero elements

我尝试在我的代码中实现它,并找到了有趣的时刻:A = diag(1e3,1e3)不使用对角线上的矩阵创建矩阵!它只使用一个非零元素创建零矩阵:

代码语言:javascript
复制
clear A
A = diag(1e3,1e3);
find(A);
ans =
     1001001

A(1001001)
ans =
        1000

好的。我在“帮助”中阅读了有关diag函数的内容,并看到了以下内容:

D= diag(v)返回一个正方形对角线矩阵,主对角线上有向量v的元素。

好的!因此,如果v由一个元素组成,它实际上不会创建对角线矩阵!帮助是错误的吗?但。还有一个问题:它为什么会这样工作?

代码语言:javascript
复制
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)元素?

不久前,他们修复了文档:

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-11-25 14:35:43

手册:诊断您正在使用第二个重载版本的diag:

D= diag(v,k)将向量v的元素放置在kth对角线上。k=0代表主对角线,k>0在主对角线之上,k<0在主对角线之下。

因此,您的命令A= diag( 5 ,5)将构造一个矩阵,其中主对角线上方的对角元素将等于矢量5,因此得到的值只有A(1,6)有一个值。

如果您想要一个1e3x1e3矩阵和对角线上的矩阵,请尝试

代码语言:javascript
复制
A = diag(ones(1,1e3));
票数 3
EN

Stack Overflow用户

发布于 2015-11-25 14:43:47

这篇文章不正确。

代码语言:javascript
复制
A = diag(1e3,1e3);

在对角线上不产生矩阵。该守则应改为:

代码语言:javascript
复制
A = eye(1e3,1e3);
票数 2
EN

Stack Overflow用户

发布于 2015-11-25 14:34:36

现在再读一遍你的问题,我真的明白了,必须重写我的答案。您正在引用文档的这一部分:

代码语言:javascript
复制
A = diag(1e3,1e3);    % Full matrix with ones on the diagonal
As = sparse(A)        % Sparse matrix with only nonzero elements
whos
  Name      Size                  Bytes  Class

  A      1001x1001                8016008  double array
  As     1001x1001                4020     double array (sparse)

这个例子肯定是错误的,可能应该是:

代码语言:javascript
复制
A=eye(1e3,1e3)
As=sparse(A);

它创建了一个1000x1000矩阵,其矩阵位于主对角线上。

错误报告给mathworks

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33919076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档