如何在不使用matlab中查找的情况下获取逻辑矩阵的索引?

隆斯特

假设我的矩阵A是比较函数的输出,即逻辑矩阵仅具有值0和1。对于大小为3 * 4的小矩阵,我们可能会有类似的内容:

A =

     1     1     0     0
     0     0     1     0
     0     0     1     1

现在,我正在生成另一个矩阵B,该矩阵的大小与A相同,但是矩阵的行中填充了索引A,并且每行中的剩余值都设置为零。

B =

     1     2     0     0
     3     0     0     0
     3     4     0     0

当前,我在A的每一行上使用find函数来获取矩阵B。完整的代码可以写为:

A=[1,1,0,0;0,0,1,0;0,0,1,1];
[rows,columns]=size(A);
B=zeros(rows,columns);

for i=1:rows
    currRow=find(A(i,:));
    B(i,1:length(currRow))=currRow;
end

对于大型martix,根据Matlab Profiler,“查找”功能需要花费时间。有什么方法可以更快地生成矩阵B吗?

注意:矩阵A每行有1000列以上,但非零元素永远不会超过50列。在这里,我将矩阵B设为与A相同的大小,但矩阵B的列大小可以小得多。

布拉克

我建议使用parfor,但是这里的开销太大,并且还有更多问题,所以它不是一个好的解决方案。

rows = 5e5;
cols = 1000;
A = rand(rows, cols) < 0.050;
I = uint16(1:cols);
B = zeros(size(A), 'uint16');
% [r,c] = find(A);
tic
for i=1:rows
%     currRow = find(A(i,:));
    currRow = I(A(i,:));
    B(i,1:length(currRow)) = currRow;
end
toc

@Cris建议用find索引操作代替它将性能提高约10%。

显然,没有更好的优化方法,除非B要求您采用特定的形式。我建议使用[r,c] = find(A);是否不需要矩阵形式的索引。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在不使用C ++中的OpenGL SuperBible着色器的情况下使用变换矩阵?

来自分类Dev

如何在不使用Android中的getLastKnownLocation方法的情况下获取当前经纬度?

来自分类Dev

如何在不使用repmat函数的情况下复制矩阵的元素

来自分类Dev

如何在不使用任何循环的情况下从PHP中的数组获取偶数键值

来自分类Dev

MATLAB:如何在不使用for循环的情况下使用一维矢量索引对多维矩阵进行子集化?

来自分类Dev

如何在不使用[index]的情况下从单个CoreData记录中获取字段(属性)?

来自分类Dev

如何在不使用for循环的情况下,根据对应列中特定值出现的次数对矩阵进行排序?

来自分类Dev

在某些情况下如何在不使用Python循环的情况下如何使矩阵成为数字的幂?

来自分类Dev

如何在不使用全局变量的情况下从回调中获取数据?

来自分类Dev

如何在不使用循环的情况下获取std :: array中项目的索引?

来自分类Dev

如何在不使用库的情况下求解3x3矩阵的逆矩阵?

来自分类Dev

如何在不使用numpy在python中使用for循环的情况下实现矩阵映射?

来自分类Dev

如何在不使用循环的情况下获取大于或小于NumPy数组中每个项目的项目索引?

来自分类Dev

如何在不使用逻辑取反或控制结构的情况下确定整数是否为零

来自分类Dev

如何在不使用gdb的情况下查找谁破坏了c(linux)中的堆栈?

来自分类Dev

如何在不使用“索引”功能的情况下找到列表中项目的位置?

来自分类Dev

如何在不使用指针的情况下从数组中获取输出?

来自分类Dev

如何在不使用任何循环的情况下从PHP中的数组获取偶数键值

来自分类Dev

如何在不使用提交按钮的情况下从多个下拉列表中获取数据

来自分类Dev

如何在不使用页面文本的情况下获取dompdf中的页面数

来自分类Dev

如何在不使用AND的情况下从多行获取ID

来自分类Dev

Liferay:如何在serviceImpl类中不使用ThemeDisplay的情况下获取用户profilePicURL?

来自分类Dev

如何在不使用MATLAB中内置函数的情况下进行10倍交叉验证?

来自分类Dev

如何在不使用循环的情况下在matlab中处理矩阵的对角线?

来自分类Dev

如何在不使用反射的情况下获取 php 类中的常量

来自分类Dev

如何在不使用循环的情况下获取python beautifulsoup中的特定部分

来自分类Dev

如何在不使用 Java 索引的情况下从 Arraylist 中删除数组元素

来自分类Dev

如何在不使用 shell 脚本中的 sort cmd 的情况下查找数组中的最大值

来自分类Dev

问:如何在不使用 XPath 的情况下从网页中查找某个部分

Related 相关文章

  1. 1

    如何在不使用C ++中的OpenGL SuperBible着色器的情况下使用变换矩阵?

  2. 2

    如何在不使用Android中的getLastKnownLocation方法的情况下获取当前经纬度?

  3. 3

    如何在不使用repmat函数的情况下复制矩阵的元素

  4. 4

    如何在不使用任何循环的情况下从PHP中的数组获取偶数键值

  5. 5

    MATLAB:如何在不使用for循环的情况下使用一维矢量索引对多维矩阵进行子集化?

  6. 6

    如何在不使用[index]的情况下从单个CoreData记录中获取字段(属性)?

  7. 7

    如何在不使用for循环的情况下,根据对应列中特定值出现的次数对矩阵进行排序?

  8. 8

    在某些情况下如何在不使用Python循环的情况下如何使矩阵成为数字的幂?

  9. 9

    如何在不使用全局变量的情况下从回调中获取数据?

  10. 10

    如何在不使用循环的情况下获取std :: array中项目的索引?

  11. 11

    如何在不使用库的情况下求解3x3矩阵的逆矩阵?

  12. 12

    如何在不使用numpy在python中使用for循环的情况下实现矩阵映射?

  13. 13

    如何在不使用循环的情况下获取大于或小于NumPy数组中每个项目的项目索引?

  14. 14

    如何在不使用逻辑取反或控制结构的情况下确定整数是否为零

  15. 15

    如何在不使用gdb的情况下查找谁破坏了c(linux)中的堆栈?

  16. 16

    如何在不使用“索引”功能的情况下找到列表中项目的位置?

  17. 17

    如何在不使用指针的情况下从数组中获取输出?

  18. 18

    如何在不使用任何循环的情况下从PHP中的数组获取偶数键值

  19. 19

    如何在不使用提交按钮的情况下从多个下拉列表中获取数据

  20. 20

    如何在不使用页面文本的情况下获取dompdf中的页面数

  21. 21

    如何在不使用AND的情况下从多行获取ID

  22. 22

    Liferay:如何在serviceImpl类中不使用ThemeDisplay的情况下获取用户profilePicURL?

  23. 23

    如何在不使用MATLAB中内置函数的情况下进行10倍交叉验证?

  24. 24

    如何在不使用循环的情况下在matlab中处理矩阵的对角线?

  25. 25

    如何在不使用反射的情况下获取 php 类中的常量

  26. 26

    如何在不使用循环的情况下获取python beautifulsoup中的特定部分

  27. 27

    如何在不使用 Java 索引的情况下从 Arraylist 中删除数组元素

  28. 28

    如何在不使用 shell 脚本中的 sort cmd 的情况下查找数组中的最大值

  29. 29

    问:如何在不使用 XPath 的情况下从网页中查找某个部分

热门标签

归档