首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mex稀疏矩阵

Mex稀疏矩阵
EN

Stack Overflow用户
提问于 2011-05-25 06:19:07
回答 1查看 1K关注 0票数 1

我使用mxCreateSparse在MEX中创建了一个稀疏矩阵。

代码语言:javascript
复制
mxArray *W;
W=mxCreateSparse(n*n,n*n,xsize,mxREAL);
double *wpoint;
wpoint=mxGetPr(W);
for(p=0;p<xsize;p++)
 {
     Wpoint[(returnindex1(xi[p][0],xi[p][1])-1)*n*n + (returnindex1(xj[p][0],xj[p][1]))]=   exp(-df[p]/(SIGMAI*SIGMAI)) * exp(-dx[p]/(SIGMAJ*SIGMAJ));
 }

来自(returnindex1(xi[p][0],xi[p][1])-1)*n*n + (returnindex1(xj[p][0],xj[p][1]))的最大值是n*n*n*n,我已经创建了维(n*n)X(n*n)的稀疏矩阵。

当我显示整个矩阵时,一些零位元素都是垃圾元素。此外,对于较大的n值,分割错误发生在wpoint

EN

回答 1

Stack Overflow用户

发布于 2011-05-25 10:14:24

pr数组包含xsize元素,您可以使用超出边界的索引访问该数组。因此违反了规则。

我认为您的基本问题是,您还没有完全理解如何在MATLAB中存储稀疏矩阵。我不是MATLAB实现细节方面的专家,但我记得它使用压缩列存储。

实质上,有3个数组如下:

  • double pr[NZMAX],它包含非零values.
  • int ir[NZMAX],它包含pr.
  • int jc[m]中每个值的行号,该值索引到prir,标识每个m列中的第一个项。

这是执行摘要,但我建议你更仔细地阅读细节。

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

https://stackoverflow.com/questions/6120319

复制
相关文章

相似问题

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