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

标签 arrays matlab matrix

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

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/

相关文章:

matlab - 将文本置于图的前面

java - Java中的多线程矩阵乘法

python - 行为异常的numpy矩阵的Python列表

javascript - 如何将具有相同属性值的对象值推送到 Javascript 中的同一个子数组?

php - 如何并排正确显示两个字符串

matlab - 将行向量更改为列向量

c - C 中动态内存分配(二维数组)的段错误

c# - 如何在 C# 中按升序对这些对象数组进行排序?

c# - 在 C# 中使用分隔符连接字节数组

matlab - 我是否在 MATLAB imfilter 中发现了单精度输入的错误?