【发布时间】:2018-07-02 07:00:41
【问题描述】:
我有两个使用 randi 的维度 [1*10] 数组。
a1 = randi(100,1,10);
a2 = randi(100,1,10);
现在我需要创建第三个数组(比如a3),它包含前面两个数组中最小的数字。
我可以使用for 循环来解决它,但是如何使用逻辑向量而不使用循环来解决它?
【问题讨论】:
我有两个使用 randi 的维度 [1*10] 数组。
a1 = randi(100,1,10);
a2 = randi(100,1,10);
现在我需要创建第三个数组(比如a3),它包含前面两个数组中最小的数字。
我可以使用for 循环来解决它,但是如何使用逻辑向量而不使用循环来解决它?
【问题讨论】:
你必须使用逻辑向量吗?
如果没有,min([a1;a2]) 可以解决问题。它查看一个矩阵并找到沿每一列的最小值。因此,如果我们从您的两个向量构建一个矩阵,我们就可以开始了。
出于某种原因,您在问题中指定的逻辑向量的hacky方式:
smaller_ix = a1 < a2
v = zeros(1,10);
v(smaller_ix) = a1(smaller_ix)
v(~smaller_ix) = a2(~smaller_ix)
【讨论】:
min 是更清晰、更有效的路线。