我认为问题是32/64位相关。如果你有一个32位的处理器,你最多可以编址

2^32 = 4.294967296e+09

元素。如果你有一个64位处理器,这个数字上升到

2^64 = 9.223372036854776e+18

不幸的是,这充其量模糊,我的理由,MATLAB不使用此齐全。要找出利用Matlab实际使用的范围,发出以下命令:

[~,maxSize] = computer

在32位系统,这给

>> [~,maxSize] = computer

maxSize =

2.147483647000000e+09

>> log2(maxSize)

ans =

3.099999999932819e+01

和64位系统上,它给

>> [~,maxSize] = computer

maxSize =

2.814749767106550e+14

>> log2(maxSize)

ans =

47.999999999999993

很显然,在32位系统上,Matlab只使用31位来寻址元素,这给了你的上限。

If anyone can clarify why Matlab only uses 31 bits on a 32-bit system, and only 48 bits on a 64-bit system, that'd be awesome :)

在内部,Matlab的总​​是使用线性索引来访问元素的阵列(它可能只是使用C语言风格的阵列或左右),这意味着为您adj矩阵,它的最后一个元素是

finEl = nNodes*nNodes = 2.54016e+09

不幸的是,这比31位的最大寻址大。因此,在32位的系统上,

>> adj(end) = 1;

??? Maximum variable size allowed by the program is exceeded.

而此命令的64位系统上在所有不会产生问题。

你将不得不使用一种变通方法在32位系统上:

nNodes = 50400;

% split sparse array up into 4 pieces

adj{1,1} = sparse(nNodes/2,nNodes/2); adj{1,2} = sparse(nNodes/2,nNodes/2);

adj{2,1} = sparse(nNodes/2,nNodes/2); adj{2,2} = sparse(nNodes/2,nNodes/2);

% assign or index values to HUGE sparse arrays

function ret = indHuge(mat, inds, vals)

% get size of cell

sz = size(mat);

% return current values when not given new values

if nargin < 3

% I have to leave this up to you...

% otherwise, assign new values

else

% I have to leave this up to you...

end

end

% now initialize desired elements to 1

adj = indHuge(adj, sub2ind([nNodes nNodes], ind, ind + 1), 1);

我只是有想法,投这一切都成真类,这样就可以使用更直观的语法。 ..但是这比我现在有更多的时间:)

matlab sub2ind 下标超出,错误:超出程序允许的最大变量大小。同时采用sub2ind相关推荐

  1. MATLAB中出现 索引超出矩阵维度,程序用matlab运行显示索引超出矩阵维度,请问怎么...

    公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:程序用matlab运行显示索引超出矩阵维度,请问怎么改?回答:用size函数可以求矩阵维数,用reshape可以改变数据维数. 如: ...

  2. 最大调用堆栈大小超出错误

    我正在使用Direct Web Remoting(DWR)JavaScript库文件,并且仅在Safari(台式机和iPad)中出现错误 它说 超出最大呼叫堆栈大小. 该错误的确切含义是什么,它会完全 ...

  3. c语言调试时出现的三种错误,C语言课件 第十四章 常见错误和程序调试

    <C语言课件 第十四章 常见错误和程序调试>由会员分享,可在线阅读,更多相关<C语言课件 第十四章 常见错误和程序调试(36页珍藏版)>请在人人文库网上搜索. 1.第十四章常见 ...

  4. Matlab的Notebook软件工具设置及程序运行

    Matlab的Notebook软件工具设置及程序运行   博战捷     摘  要  介绍了在Matlab中如何设置Notebook软件工具,将Matlab程序嵌入中文Word.举例说明了中文Word ...

  5. 使用Matlab编写简单的图片标注程序

    使用Matlab编写简单的图片标注程序 最近在做数字图像处理大作业,本来想使用检测算法检测出图中车辆的位置,无奈水平有限,检测效果不佳,只能被迫使用matlab编写一个手动标注程序了.事实证明这真是项 ...

  6. MATLAB程序设计与应用 4.2 程序控制结构

    MATLAB程序设计与应用 4. 第4章 MATLAB程序流程控制 文章目录 MATLAB程序设计与应用 4. 第4章 MATLAB程序流程控制 4.2 程序控制结构 4.2.1 顺序结构 4.2.2 ...

  7. linux调试C++错误: 程序中有游离的‘\240’‘\302’

    今天在网上找到一个小程序,一编译出现一大堆的 错误: 程序中有游离的 ...... 开始觉得可能我从网页上直接复制的代码中有别的字符.于是把中文的全角空格全部替换了. 这次好多了,少了一些,不过还有很 ...

  8. matlab创建符号常量出错,错误:代码中意外的符号/输入/字符串常量/数值常数/特殊...

    这些错误意味着您试图运行的R代码或源代码在语法上是不正确的.也就是说,你有一个错误. 若要修复此问题,请仔细阅读错误消息.错误消息中提供的代码显示了R认为问题所在的地方.在原始代码中找到这一行,并查找 ...

  9. Matlab中下标,斜体,及希腊字母的使用方法

    下面是Matlab官方列出来的Tex代码列表,包含了绝大部分的希腊字母和数学符号. Character Sequence Symbol Character Sequence Symbol Charac ...

最新文章

  1. 无界限设计加持!魅族手环正式亮相
  2. Span元素的 width属性 无效果原因及解决方案
  3. java空心菱形_java 空心菱形
  4. idea 调节背景护眼_夜间用电脑亮瞎眼睛?这份夜间护眼指南来帮你。
  5. PAT乙级(1026 程序运行时间)
  6. 软件工程师如何自学成才?
  7. 使用shell写简单的计算机
  8. 文件管理系统(开发文档)
  9. pdf文件的预览——几种方式实现——技能提升
  10. 偶极子天线参数优化记录
  11. 数控技术 - 直线插补 - 数字积分法(DDA)
  12. ad中电容用什么封装_电容器是怎么工作的?它在电路中究竟起什么作用?
  13. Word2010邮件合并(附带照片)
  14. Python3网络爬虫(十四):跟股神巴菲特学习炒股之财务报表入库(MySQL)
  15. Docker 学习前置,网络IP地址以及交互
  16. 计算机连接网络需要什么,宽带怎么安装需要什么_安装宽带步骤-系统城
  17. 列举所有的“四叶玫瑰数”,并统计四叶玫瑰数的个数 四叶玫瑰数:是一个四位数,各个位的数字的四次方的和,为该数字本身
  18. 00 C++ UML类图详解
  19. 春招进行中,想进外企?500强资深程序员谈谈外企真实感受!
  20. 移动应用程序管理(MAM)

热门文章

  1. 简单解释Ablation Study
  2. ubuntu下新建txt文档的快捷方式
  3. 2021年安徽省安全员C证考试试卷及安徽省安全员C证模拟试题
  4. 为了庆祝双十一提前到来的随笔 2020-10-30
  5. redis解决高并发问题,如商品秒杀
  6. 【AUTOSAR-CanSM】-2.4-参数CanSMBorTimeTxEnsured详解
  7. 转自程先的专栏:如果是初学C语言请看完 一些成功人士的心得
  8. DirectX11 龙书 暴力输出调试信息方法
  9. citespace项目
  10. nyoj -1153.木叶村最安全的地方(思维)