KarryMa 2022-07-11 08:53 采纳率: 100%
浏览 231
已结题

matlab报错 内存不足

问题遇到的现象和发生背景

The error description is as follows:

Error using full request 68813x68813 (35.3GB) array to exceed the preset maximum array size Creating an array larger than this limit can take a long time and result in no response from MATLAB for more information, see Array Size Limits or Default Items panel.

Error schurmat_sblk (line 35) if issparse(schur); schur = full(schur); end;

The function file schurmat_sblk is a file in cvx\sdpt3\Solver,

我的矩阵是有结构的,稀疏/低秩,还有别的解决方案吗?

问题相关代码,请勿粘贴截图

The value you may need are: n=8; d=2^n;m=(d^2)0.05;the size of Pauli is md^2, it's a sparse matrix. The size of y is m*1;
function [rhoE] = test_compressed_cc(n,~,m,Pauli,y)

d = 2^n;
cvx_begin sdp quiet
% how to define the variable ?
variable rhoE(d,d) hermitian;
rhoE == hermitian_semidefinite(d);
% ||x||_tr=tr(sqrt(x^\daggerx))=tr(sqrt(x^2))=Tr(x)
minimize(trace(rhoE));
subject to
(d/m)*(Pauli * vec(rhoE)) == y;
rhoE >= 0;
cvx_end
end

运行结果及报错内容

内存不足。

出错 schurmat_sblk (line 35)
if issparse(schur); schur = full(schur); end;

出错 HKMpred (line 60)
schur = schurmat_sblk(blk,At,par,schur,p,X,par.Zinv);

出错 sqlpmain (line 342)
HKMpred(blk,At,par,rp,Rd,sigmu,X,Z,invZchol);

出错 sqlp (line 242)
sqlpmain(blk3,At3,C3,b,par,parbarrier3,X03,y0,Z03);

出错 cvx_run_solver (line 50)
[ varargout{1:nargout} ] = sfunc( inputs{:} );

出错 cvx_sdpt3>solve (line 362)
[ obj, xx, y, zz, info ] = cvx_run_solver( @sqlp, blk, Avec, Cvec, b, OPTIONS, 'obj', 'x', 'y', 'z',
'info', settings, 5 ); %#ok

出错 cvxprob/solve (line 429)
[ x, status, tprec, iters, y ] = shim.solve( At, b, c, cones, quiet, prec, solv.settings,
eargs{:} );

出错 cvx_end (line 88)
solve( prob );

出错 Solve_CC_rhoE (line 22)
cvx_end

出错 test_8q_m (line 48)
[rhoE,noiseE] = Solve_CC_rhoE(n,r,m,s,Pauli,y,noiseT);

我的解答思路和尝试过的方法

尝试修改 cvx包里的 schurmat_sblk 文件,可以保存,但似乎运行会出问题,看不懂文件的代码;用足够大内存的服务器运行出现同样报错,不知道原因何在。

我想要达到的结果

代码能够顺利运行,解决内存不足问题

展开全部

  • 写回答

1条回答 默认 最新

  • Wayne_Fine Matlab领域优质创作者 2022-07-11 14:19
    关注

    感觉没有那么麻烦,就是因为 schur 这个矩阵太大了存不下吧。他提示你“计算中产生的68813x68813(占35.3GB临时内存)大小的方阵,超过了预设矩阵的最大范围,创建大于此限制的矩阵会消耗很长时间并导致MATLAB没有响应从而报错”,
    必须要这么大的数据量吗,能不能考虑取特征值压缩一下,或者不要一次迭代运算出这么大量?分块计算。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 7月21日
  • 已采纳回答 7月14日
  • 修改了问题 7月11日
  • 创建了问题 7月11日

悬赏问题

  • ¥20 DNS服务器所在的国家不同与你的IP地址所在国家
  • ¥15 查询优化:A表100000行,B表2000 行,内存页大小只有20页,运行时3页,设计两个表等值连接的最简单的算法
  • ¥15 led数码显示控制(标签-流程图)
  • ¥20 为什么在复位后出现错误帧
  • ¥15 结果有了,想问一下这个具体怎么输入
  • ¥15 怎么修改鸿蒙app的UI及功能设计
  • ¥15 帮我利用jupyter 运行一个正确的代码
  • ¥15 sqlite加密问题咨询
  • ¥15 appdesigner接收不到udp组播的数据
  • ¥15 verilog 非阻塞赋值下的移位拼接错误
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部