matlab sub2ind 下标超出,错误:超出程序允许的最大变量大小。同时采用sub2ind
我认为问题是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相关推荐
- MATLAB中出现 索引超出矩阵维度,程序用matlab运行显示索引超出矩阵维度,请问怎么...
公告: 为响应国家净网行动,部分内容已经删除,感谢读者理解. 话题:程序用matlab运行显示索引超出矩阵维度,请问怎么改?回答:用size函数可以求矩阵维数,用reshape可以改变数据维数. 如: ...
- 最大调用堆栈大小超出错误
我正在使用Direct Web Remoting(DWR)JavaScript库文件,并且仅在Safari(台式机和iPad)中出现错误 它说 超出最大呼叫堆栈大小. 该错误的确切含义是什么,它会完全 ...
- c语言调试时出现的三种错误,C语言课件 第十四章 常见错误和程序调试
<C语言课件 第十四章 常见错误和程序调试>由会员分享,可在线阅读,更多相关<C语言课件 第十四章 常见错误和程序调试(36页珍藏版)>请在人人文库网上搜索. 1.第十四章常见 ...
- Matlab的Notebook软件工具设置及程序运行
Matlab的Notebook软件工具设置及程序运行 博战捷 摘 要 介绍了在Matlab中如何设置Notebook软件工具,将Matlab程序嵌入中文Word.举例说明了中文Word ...
- 使用Matlab编写简单的图片标注程序
使用Matlab编写简单的图片标注程序 最近在做数字图像处理大作业,本来想使用检测算法检测出图中车辆的位置,无奈水平有限,检测效果不佳,只能被迫使用matlab编写一个手动标注程序了.事实证明这真是项 ...
- MATLAB程序设计与应用 4.2 程序控制结构
MATLAB程序设计与应用 4. 第4章 MATLAB程序流程控制 文章目录 MATLAB程序设计与应用 4. 第4章 MATLAB程序流程控制 4.2 程序控制结构 4.2.1 顺序结构 4.2.2 ...
- linux调试C++错误: 程序中有游离的‘\240’‘\302’
今天在网上找到一个小程序,一编译出现一大堆的 错误: 程序中有游离的 ...... 开始觉得可能我从网页上直接复制的代码中有别的字符.于是把中文的全角空格全部替换了. 这次好多了,少了一些,不过还有很 ...
- matlab创建符号常量出错,错误:代码中意外的符号/输入/字符串常量/数值常数/特殊...
这些错误意味着您试图运行的R代码或源代码在语法上是不正确的.也就是说,你有一个错误. 若要修复此问题,请仔细阅读错误消息.错误消息中提供的代码显示了R认为问题所在的地方.在原始代码中找到这一行,并查找 ...
- Matlab中下标,斜体,及希腊字母的使用方法
下面是Matlab官方列出来的Tex代码列表,包含了绝大部分的希腊字母和数学符号. Character Sequence Symbol Character Sequence Symbol Charac ...
最新文章
- 无界限设计加持!魅族手环正式亮相
- Span元素的 width属性 无效果原因及解决方案
- java空心菱形_java 空心菱形
- idea 调节背景护眼_夜间用电脑亮瞎眼睛?这份夜间护眼指南来帮你。
- PAT乙级(1026 程序运行时间)
- 软件工程师如何自学成才?
- 使用shell写简单的计算机
- 文件管理系统(开发文档)
- pdf文件的预览——几种方式实现——技能提升
- 偶极子天线参数优化记录
- 数控技术 - 直线插补 - 数字积分法(DDA)
- ad中电容用什么封装_电容器是怎么工作的?它在电路中究竟起什么作用?
- Word2010邮件合并(附带照片)
- Python3网络爬虫(十四):跟股神巴菲特学习炒股之财务报表入库(MySQL)
- Docker 学习前置,网络IP地址以及交互
- 计算机连接网络需要什么,宽带怎么安装需要什么_安装宽带步骤-系统城
- 列举所有的“四叶玫瑰数”,并统计四叶玫瑰数的个数 四叶玫瑰数:是一个四位数,各个位的数字的四次方的和,为该数字本身
- 00 C++ UML类图详解
- 春招进行中,想进外企?500强资深程序员谈谈外企真实感受!
- 移动应用程序管理(MAM)