在循环中有A(n,1),B(n,1)和以下条件
for i=1:m
if ( A(i, 1) > error )
B(i,1) = 0;
else
B(i,1) = exp (-A(i,1) / 100)
end
end
如何在不使用任何循环的情况下重写此条件?有可能是这样的吗
if ( A(:, 1) > error )
B(:,1) = 0;
else
B(:,1) = exp (-A(:,1) / 100)
end
答案 0 :(得分:7)
idxs = (A > error);
B( idxs) = 0;
B(~idxs) = exp(-A(~idxs) / 100);
答案 1 :(得分:2)
你接近你的建议。关键是要形成一个“逻辑指数”。
i = A(:,1) > error;
B(i,:) = 0;
B(~i,:) = exp (-A(:,1) / 100);
由于你的矩阵A和B是向量(一维矩阵),在这种情况下(:,1)
和(i,:)
不是必需的,但是因为它们在你的初始公式中,我把它们留在了如果您使用的是多维矩阵(m * n),则可以通过i = A > error;
代替i = A(:,1) > error;