我试图获得线性整流器的矢量优化版本。即 y = max(0,x)。那么它应该计算它的元素最大值 0 和 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 是否有自己的此类函数的矢量化版本的实现?如果可以的话,如果有一种方法可以对我的代码进行矢量化,我总是尽量避免循环。它通常会加快速度。
顺便说一句,我显然尝试过谷歌搜索,但并没有真正得到我预期的结果......
最佳答案
解决方案很简单
y = max(x,0);
这适用于 x 作为列、行向量、矩阵、高维矩阵等。另一方面
y = max(zeros(1,length(x)),x);
仅适用于 x 为行向量的情况。当 x 是列向量或矩阵时,它会失败。
关于matlab - MATLAB 中是否有修正线性函数 max(0,x) 的优化矢量化函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31414607/