【问题标题】:Apply a function to each cell in Octave对 Octave 中的每个单元格应用一个函数
【发布时间】:2019-07-15 06:22:13
【问题描述】:

我有一个矩阵:

>> 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

如何在不显式循环每列的情况下应用此功能?

【问题讨论】:

    标签: matrix octave


    【解决方案1】:
    >> 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
    

    【讨论】:

    • B = A.*bsxfun(@gt, A, .5*M);,如果是 R2016b 之前的版本
    • 一个很好的 Matlab 兼容性说明,但这个问题专门询问了 Octave。自 2012 年初发布的 v3.6.0 以来,自动广播就已经到位。
    猜你喜欢
    • 2015-09-13
    • 2021-11-16
    • 1970-01-01
    • 2017-01-21
    • 1970-01-01
    • 1970-01-01
    • 2012-08-16
    • 2011-06-23
    • 2017-04-02
    相关资源
    最近更新 更多