【问题标题】:Using logical vectors and logical 2D array(MATLAB)使用逻辑向量和逻辑二维数组(MATLAB)
【发布时间】:2018-07-02 07:00:41
【问题描述】:

我有两个使用 randi 的维度 [1*10] 数组。

a1 = randi(100,1,10);
a2 = randi(100,1,10);

现在我需要创建第三个数组(比如a3),它包含前面两个数组中最小的数字。 我可以使用for 循环来解决它,但是如何使用逻辑向量而不使用循环来解决它?

【问题讨论】:

    标签: matlab vector


    【解决方案1】:

    你必须使用逻辑向量吗?

    如果没有,min([a1;a2]) 可以解决问题。它查看一个矩阵并找到沿每一列的最小值。因此,如果我们从您的两个向量构建一个矩阵,我们就可以开始了。

    出于某种原因,您在问题中指定的逻辑向量的hacky方式:

    smaller_ix = a1 < a2
    v = zeros(1,10);
    v(smaller_ix) = a1(smaller_ix)
    v(~smaller_ix) = a2(~smaller_ix)
    

    【讨论】:

    • 我认为这根本不是 hacky。但是你是对的,min 是更清晰、更有效的路线。
    • 感谢 Uri Merhav。我使用了 min([a1;a2]) ,它看起来相当不错,除了我来自新数组的一些值等于以前的数组并且不小于它们。但这是一个非常好的代码。我试过用这个,a1 = randi(100,1,10); a2 = 兰迪(100,1,10); x = a1
    • Sujal,如果您认为这回答了您的问题,请将其标记为已回答
    猜你喜欢
    • 1970-01-01
    • 2017-02-02
    • 2012-01-02
    • 2013-10-15
    • 2021-02-13
    • 2016-11-30
    • 1970-01-01
    • 1970-01-01
    • 2013-10-06
    相关资源
    最近更新 更多