Matlab - 分配到数组导致错误 : "Maximum variable size allowed by the program is exceeded"

标签 matlab memory

我正在运行一个创建大量大数组的脚本。一切运行正常,直到以下几行:

%dist is a sparse matrix
inds=dist~=0;
inserts=exp(-dist(inds).^2/2*sig_dist);
dist(inds)=inserts;

最后一行导致错误:???超出了程序允许的最大变量大小。

我不明白最后一行如何增加变量大小 - 请注意我只在非零开始的地方插入到矩阵 dist 中。那么这里发生了什么?

最佳答案

我不确定您为什么会看到该错误。但是,我建议您使用 Matlab 函数 spfun 将函数应用于稀疏矩阵中的非零元素。例如:

>>dist = sprand(10000,20000,0.001);
>>f = @(x) exp(-x.^2/2*sig_dist);
>>dist = spfun(f,dist)

关于Matlab - 分配到数组导致错误 : "Maximum variable size allowed by the program is exceeded",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7321958/

相关文章:

android - 如何在安卓游戏中释放/释放内存

java - 使用集合对象还是Java传输对象的性能比较(以堆大小而言)

matlab - Matlab 中优雅的 k-最小 argmin

matlab - 在 .csv 上使用 readtable,并在最后一个单元格后添加垃圾文本

matlab - 如何设置 Mat to Mat with a mask? (开放式简历)

python - 在 MATLAB 中检查梯度而不解决优化问题

matlab - 自 "Jan 1, 0000": is this -1 BC or +1 CE? 起的序列日期号

java - 在循环中创建新对象的效率

PHP MYSQL - 内存 - 无法保存结果集

c++ - 删除内存和对相关位置数据的影响