我试图得到线性整流器的矢量优化版本。即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