【问题标题】:Counting values that meet a condition计数满足条件的值
【发布时间】:2019-07-15 09:53:37
【问题描述】:

我正在尝试计算列向量中的值大于0.5 的次数。下面的代码将我带到我需要的地方,但我想知道这是最有效的方法。

n = 500
AA = rand(n,1);
for i = 1:n
    if abs(AA(i))>0.5
      BB(i)=1;
    else
      BB(i)=0;
    end
end
sBB = sum(BB);
SD = sBB/n;

【问题讨论】:

  • 你可以做BB = AA>0.5。
  • 谢谢!我会接受这个作为答案或删除这个问题。不管你有什么建议!
  • 如何从 Excel 证明您的方法是合理的?在 Excel 中,我们将执行 =COUNTIF(A1:A4, ">0.5") - 不涉及循环。不想听起来咄咄逼人,我只是想了解您为什么决定使用循环。
  • 我知道你的意思,我只是想在 MATLAB 中解决问题,而不是直接思考。

标签: matlab performance optimization count conditional-statements


【解决方案1】:

这项任务可以从矢量化中受益:

n = 500
AA = rand(n,1); % You used vectorization already (!) and not create each entry separately...
BB = AA>0.5;    % Results in a vector of logicals which signifies where the condition was met
SD = sum(BB)/n; % Can also be `nnz(BB)/n` or `mean(BB)`

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 2019-04-30
    • 2020-05-01
    • 1970-01-01
    • 2013-10-14
    • 2019-07-07
    • 2019-03-11
    相关资源
    最近更新 更多