Matrix 对倍频程中的每个单元格应用一个函数

Matrix 对倍频程中的每个单元格应用一个函数,matrix,octave,Matrix,Octave,我有一个矩阵: >> A = rand(5,2) ans = 0.843985 0.911387 0.330442 0.589956 0.828405 0.220234 0.049927 0.632131 0.975574 0.254384 我想输出一个相同大小的新矩阵(或替换上面矩阵中的项目),其中每个项目的计算如下: 如果项目(x,y)大于(所属列的最大值*0.50),则使用项目值 否则,项目=0 在上面的例子中 最大值

我有一个矩阵:

>> A = rand(5,2)
ans =

   0.843985   0.911387
   0.330442   0.589956
   0.828405   0.220234
   0.049927   0.632131
   0.975574   0.254384
我想输出一个相同大小的新矩阵(或替换上面矩阵中的项目),其中每个项目的计算如下:

  • 如果项目(x,y)大于(所属列的最大值*0.50),则使用项目值
  • 否则,项目=0
在上面的例子中

  • 最大值(A)=[0.975574 0.911387]
  • 最大值(A)*0.50=[0.488779 0.45569]
输出应该是

   0.843985   0.911387
   0          0.589956
   0.828405   0
   0          0.632131
   0.975574   0

如何在不显式循环每个列的情况下应用此函数

B=A.*bsxfun(@gt,A,.5*M)如果R2016ba之前的版本对Matlab有很好的兼容性说明,但是这个问题特别询问了倍频程。自2012年初发布v3.6.0以来,自动广播已经到位。
>> A = rand(5,2)
A =
    0.8147    0.0975
    0.9058    0.2785
    0.1270    0.5469
    0.9134    0.9575
    0.6324    0.9649
>> B = A.*(A>0.5*max(A))
B =
    0.8147         0
    0.9058         0
         0    0.5469
    0.9134    0.9575
    0.6324    0.9649