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