MATLAB的数值索引与逻辑索引的速度对比
创作时间:
作者:
@小白创作中心
MATLAB的数值索引与逻辑索引的速度对比
引用
CSDN
1.
https://blog.csdn.net/laughzjh/article/details/139519040
在MATLAB编程中,数值索引和逻辑索引是两种常用的数组元素选择方法。本文将详细介绍这两种索引方式的原理,并通过实验对比它们在不同数据量和索引量下的性能表现。
在MATLAB中,数值索引和逻辑索引都是用于从数组中选择特定元素的方法,但它们使用不同的方式来进行索引。
数值索引
数值索引是使用整数值作为索引来访问数组中的元素。你可以通过指定行和列的索引来访问特定的元素。
其中数值索引包括:
- 单下标索引
可以用数或数组索引一个或多个元素
A = [1 2 3]
>> A(2) %索引一个元素
ans = 2
>> A([2 3]) %索引多个元素
ans = 2 3
- 线性索引
将多维数组视为单列向量,按照对单列向量的索引方式进行索引。
B = [1:3;4:6;7:9]
>> B(5)
ans = 5
- 多下标索引
指定数组各个维度的元素位置进行索引
C = [1 2 3 4; 5 6 7 8; 9 10 11 12; 13 14 15 16]
>> C(1:3,2:4)
ans =
2 3 4
6 7 8
10 11 12
逻辑索引
逻辑索引是使用逻辑值(true或false)数组来选择数组中的元素。
可以通过条件语句创建一个与原始数组相同大小的逻辑数组,其中每个元素表示是否选择对应位置的元素。然后,通过将逻辑数组用作索引,可以选择满足条件的元素。
>> A = [1 2 6; 4 3 6]
A =
1 2 6
4 3 6
>> idx = A > 5 %通过条件语句创建逻辑数组
idx =
2×3 logical 数组
0 0 1
0 0 1
>> A(idx) %通过逻辑数组索引元素
ans =
6
6
性能对比
当讨论到数值索引与逻辑索引时,经常会提到 find 函数。find 函数可以返回数组中非0元素的位置,也就是说通过 find 函数可以将逻辑索引转换为数值索引。
但MATLAB的Code Analyzer通常会建议在数组与元胞数组中直接使用逻辑索引而非使用 find 函数转化为数值索引,因为 find 函数在创建索引向量时会带来额外的性能开销。
所以这里将对比数值索引、逻辑索引、find函数转换这三种方式在不同数据量与索引量下的性能表现。
通过以下函数对比在不同数据量和索引量的条件下上述三种方式的性能。
function idxPerform(dataSize,idxSize)
Set=false(dataSize,1,'like',logical(dataSize));
Index=cast(randsample(dataSize,idxSize),'like',dataSize);
disp('索引性能测试');
fprintf('数值索引:');
Start=tic;
Out=Set(Index);
toc(Start);
Set(Index)=true;
fprintf('逻辑索引:');
Start=tic;
Out=Set(Set);
toc(Start);
fprintf('find函数索引:');
Start=tic;
Out=Set(find(Set));
toc(Start);
end
数据量1e3
- 索引量1
- 索引量100
- 索引量1000
数据量1e6
- 索引量1
- 索引量1e3
- 索引量1e6
数据量1e9
- 索引量1
- 索引量1e3
- 索引量1e6
数据量1e10
- 索引量1
总结
- 在数据量较小(1e3级别)时,逻辑索引在不同的索引量下均有一定性能优势,其余两种数值索引方式性能差异不大。
- 随着数据量的增加(超过1e6级别),数值索引的性能优势开始凸显,而逻辑索引与
find函数转换方式的差别不大,后者仅仅在索引量较小时有一定性能提升效果。 - 当索引量接近数据量的时候,数值索引对逻辑索引的性能优势将会越来越小。
- 虽然数值索引始终是最快的,但在数据量较小的场景使用逻辑索引对性能的影响十分有限。
find函数方法在一定场景下领先逻辑索引,可以考虑在编码与测试中进行尝试。
热门推荐
抖音短视频拍摄比例指南:选择9:16提升观看体验与吸引力
明朝版“我命由我不由天”?从《了凡四训》看命运的可能性
网络安全自学入门:(超详细)从入门到精通学习路线&规划,学完即可就业
你的身体四处飘“呤”!收好最全食物嘌呤等级表,别再让嘌呤害了你
室内噪声检测方法与标准,费用及机构选择指南
电源滤波器的电磁兼容性设计与应用
三千与五千,电动车与电动摩托车究竟差在哪?怎么选才划算?
王安石变法:北宋时期的改革尝试与教训
婚姻责任分担是什么?如何实现公平合理的责任划分?
机器人概念股狂飙!传感器成幕后“大明星”?三家公司澄清业务细节
赵雅芝71岁青春密码揭秘:健康与心态的艺术
出差归来后,如何进行礼仪性的汇报和沟通?
服役超29年仍不断升级,“超级大黄蜂”满足了哪些关键需求?
李清照的《一剪梅》:古典词中的情感与意境之美
中国乒乓大捷!8-0、8-1,8-2、8-4,孙颖莎、王楚钦助国乒9连胜
车牌含义是什么?车牌号码对车辆管理有哪些具体影响?
千年窑火:揭秘古代中国陶瓷艺术的不朽魅力
BD岗位的薪资水平如何?行业调查报告
一个家最好的样子:常沟通,多陪伴,能理解
【决策心理学】:技术决策中的认知偏差与修正策略的心理学见解
历史上真实的姜子牙:传奇人生与长寿之谜
痘坑痘印的形成原因及有效治疗方法
爱情的真正意义:超越浪漫的深刻理解
大类资产历史收益率比较
时间序列预测的全面综述:架构多样性与开放挑战
抽血要空腹?喝水算不算空腹?听听医生怎么说
合肥经济为什么能达到如此惊人速度?
老年人运动不伤身,照着这份骨科大夫的推荐与避坑清单做就对了
临沂市成功实现DeepSeek本地化部署,谱写政务服务新篇章
天秤座最佳配对星座:三大绝配解析