gpt4 book ai didi

arrays - Matlab:使用较小的数组创建更大的数组

转载 作者:行者123 更新时间:2023-12-02 08:26:01 26 4
gpt4 key购买 nike

我有两个巨大的数组,如下所示:

A = [11, 11, 12, 3, 3, 4, 4, 4 ];
B = [ 12, 4; 3, 11; 11, 1; 4, 13 ];

我想创建一个数组,它从 B 中获取值,从 A 中获取第 1 列,如下所示:

C = [ 11, 1; 11, 1; 12, 4; 3, 11; 3, 11; 4, 13; 4, 13; 4, 13 ];

我不想使用 for 或任何其他类型的循环来优化流程。

抱歉太简洁了。

我将在 B 的第 1 列中搜索 A 的第 1 列中的每个元素,并从 B 中选择相应的第 2 列元素,并创建一个包含 A 的第 1 列元素和从 B 中发现的第 2 列元素的新数组。

最佳答案

您在此问题中所做的是使用 A 并搜索 B 的第一列以查看是否存在匹配项。一旦匹配,提取出与 B 中匹配位置对应的行。对 A 中的其余值重复此操作。

假设 A 的所有值都可以在 B 中找到并且 B 的第一列是不同的 并且没有重复项,您可以调用 uniquesortrows 调用。 unique 调用是在 A 上进行的,因此您可以将 A 中的每个值分配为按排序顺序排列的唯一标签。然后,您将使用这些标签对 B 的排序版本进行索引,以获得您想要的结果:

[~,~,id] = unique(A);
Bs = sortrows(B);
C = Bs(id,:);

我们得到 C:

C =

11 1
11 1
12 4
3 11
3 11
4 13
4 13
4 13

关于arrays - Matlab:使用较小的数组创建更大的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32100098/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com