performance - 替换二维矩阵的元素

标签 performance matlab conditional-statements product vectorization

我正在尝试提高 MATLAB 代码的效率。它的作用是,用同一行中其余非零元素的乘法替换矩阵的非零元素。例如,

X = [2 3 6 0; 0 3 4 2]

转变为

X = [18 12 6 0; 0 8 6 12]

在 for 循环中实现这是一项简单的任务。它检查每一行,找到非零值并进行替换。不过我想摆脱 for 循环。有没有办法在没有循环的情况下实现这个?

最佳答案

代码

X = [2 3 6 0; 0 3 4 2];

X1 = X;
X1(~X) = 1;

out = bsxfun(@rdivide,prod(X1,2),X1).*(X~=0)

输出

out =

    18    12     6     0
     0     8     6    12

关于performance - 替换二维矩阵的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22436036/

相关文章:

Swift 可用性条件主要版本号

javascript - 通过字符串或整数更快地访问数字属性?

java - 从目录读取文件并从Java过滤文件

matlab - 从小范围内生成随机不重复整数

matlab - 什么是 MATLAB?它会生成可执行文件吗?

conditional-statements - 如果 Apt 包丢失,则 Ansible 执行任务

php - 仅当 DIV 包含内容时才输出 CSS

javascript - 使用数组或 JSON 来跟踪唯一列表

performance - Fiddler2 中的内存泄漏和性能泄漏

string - 在 MATLAB 中计算元胞数组中具有特定单词的单元格数量