Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
假设在MATLAB中,我有一个矩阵A,其元素为0或1。
如何以更快的矢量化方式获取每列最后一个非零元素的索引的向量? 我可以做 [B, I] = max(cumsum(A)); 并使用I ,但是有更快的方法吗? (我假设即使将0和1加起来也将花费一些时间)。 编辑:我想我向量化的速度远远超过了我所需要的速度-Fooz先生的循环很棒,但即使快速,MATLAB中的每个循环似乎也花费了我很多调试时间。 回答: 如Fooz先生所示 ,使用新版本的MATLAB,for循环现在可以很快。但是,如果您真的想拥有紧凑的矢量化代码,建议您尝试以下操作: [B,I] = max(flipud(A)); I = size(A,1)-I+1; 这比基于CUMSUM的答案要快,但仍然不如Fooz先生的循环选项快。 需要考虑的另外两件事:
更多&回答... |
![]() |
![]() |