我在 MATLAB 中有两个矩阵,可以说 arr1
和 arr2
,每个矩阵的大小为 1000*1000。我想比较它们的元素并将比较保存在结果矩阵 resarr
中,它也是 1000*1000 这样对于每个元素:
- 如果
arr1
中的元素大于arr2
中的元素,则将值 1 放入结果中 - 如果
arr2
中的元素更大,则存储值2
但我不想使用 for 循环来执行此操作,因为那样速度较慢。我该怎么做?
编辑:
此外,如果我想在 1000*1000*3 结果矩阵中存储不同的 RGB 值,这取决于 arr1
和 arr2
的比较,是否可以在没有慢循环的情况下完成?
例如,如果 arr1
较大,则存储 (255,0,0),如果 arr2
较大,则存储 (0,255,0)
最佳答案
resarr = 2 - (arr1 > arr2)
arr1>arr2
逐个元素比较 arr1 和 arr2,返回 1000x1000 矩阵,其中 arr1 较大,其中包含 1,否则为 0。 2 -
部分使它成为一个矩阵,如果 arr1 大于 arr2,则为 1,否则为 2。
注意:如果 arr1 和 arr2 在某个时刻相等,你也会得到 2(因为 arr1>arr2 返回 0,那么 2-0=2)。
关于MATLAB:比较两个数组的所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2209194/