对于整流线性函数max(0,x), MATLAB中是否存在优化的矢量化函数?



我试图得到线性整流器的矢量优化版本。即y = max(0,x)。所以它应该计算它的元素max(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有自己的实现这样一个函数的矢量化版本?我总是尽量避免循环,如果我可以在matlab中,如果有一种方法来矢量化我的代码。它通常会加快速度。

顺便说一句,我显然试过谷歌,但没有真正得到我预期的结果…

解决方案很简单

y = max(x,0);

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

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

只适用于x是行向量的情况。当x是列向量或矩阵时,它失败。

max接受矩阵输入:

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

的回报:

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

相关内容

最新更新