【问题标题】:Is there an optimized vectorized function of the rectified linear function max(0,x) in MATLAB?MATLAB中是否存在校正线性函数max(0,x)的优化向量化函数?
【发布时间】:2015-07-14 18:34:07
【问题描述】:

我试图获得线性整流器的矢量优化版本。即 y = max(0,x)。那么它应该计算其元素最大值为零和 x_i。我显然实现了:

function [ y ] = rectSig( x )
%rectSig computes vector-wise rectified linear function
%  computes y = [..., max(0,x_i), ...]
n=length(x);
y = zeros(1,n);
for i=1:1:length(x);
    y(i) = max(0,x(i));
end
end

但是,我知道在 MATLAB 中这样的循环是不明智的。所以我想知道是否有更好的方法来做到这一点,或者 matlab 是否有自己的这种函数的矢量化版本的实现?如果可以在 matlab 中,如果有办法对我的代码进行矢量化,我总是尽量避免循环。它通常倾向于加快速度。

顺便说一句,我显然尝试用谷歌搜索它,但并没有真正得到我预期的结果......

【问题讨论】:

    标签: matlab machine-learning


    【解决方案1】:

    解决方法很简单

    y = max(x,0);
    

    这适用于 x 作为列、行向量、矩阵、高维矩阵等。另一方面

    y = max(zeros(1,length(x)),x);
    

    仅适用于 x 作为行向量。当 x 是列向量或矩阵时,它会失败。

    【讨论】:

      【解决方案2】:

      max 接受矩阵输入:

      x = -5:5;
      comparisonvector = zeros(size(x));
      y = max(comparisonvector, x);
      

      返回:

      y =
      
       0     0     0     0     0     0     1     2     3     4     5
      

      【讨论】:

        猜你喜欢
        • 2012-10-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-06
        • 1970-01-01
        • 2018-02-21
        • 2015-01-27
        • 1970-01-01
        相关资源
        最近更新 更多