Matlab,如果条件没有循环

jus*_*tik 2 matlab loops for-loop if-statement conditional-statements

在循环内有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
Run Code Online (Sandbox Code Playgroud)

如何在不使用任何循环的情况下重写此条件?有可能是这样的

 if ( A(:, 1) > error )
      B(:,1) = 0;
   else
      B(:,1) = exp (-A(:,1) / 100)
 end
Run Code Online (Sandbox Code Playgroud)

Oli*_*rth 7

使用逻辑索引:

idxs = (A > error);
B( idxs) = 0;
B(~idxs) = exp(-A(~idxs) / 100);
Run Code Online (Sandbox Code Playgroud)