MATLAB:比较两个数组的所有元素

n0o*_*0ob 2 comparison matlab matrix vectorization

我在MATLAB两个矩阵让说arr1arr2尺寸1000*1000的每一个.我想比较它们的元素并将结果保存在resarr1000*1000 的结果矩阵中,以便每个元素:

  • 如果元素in arr1大于in arr2,则将值1放在结果中
  • 如果元素in arr2更大,则存储值2

但是我不想用for循环来做这个,因为那个更慢.我怎样才能做到这一点?


编辑: 另外,如果我想不同的RGB值存储在一个1000×1000×3矩阵的结果,取决于比较arr1arr2,可以在不慢的循环来实现?

例如,store(255,0,0)if arr1更大,(0,255,0)if arr2更大

Ofr*_*viv 5

resarr = 2 - (arr1 > arr2)
Run Code Online (Sandbox Code Playgroud)

arr1>arr2逐个元素地比较arr1和arr2,返回包含1的1000x1000矩阵,其中arr1更大,否则返回0.2 - 如果arr1大于arr2,则该部分将其变为矩阵,其中有1,否则为2.

注意:如果arr1和arr2在某个时刻是euqal,你也会得到2(因为arr1> arr2返回0,然后2-0 = 2).

  • 作为一个评论,即使这段代码是正确的,性能方面也要注意,通过存储1/2而不是true/false,你创建的矩阵是逻辑类型大小的x8倍. (2认同)