根据特定规则挑选数组的元素
Picking out elements of an array according to a specific rule
所以我在 MATLAB 中有一个 100000-by-2 矩阵。我只想提取第二列中的元素,这些元素在第一列中的对应行都具有相同的元素。例如。如果我们有:
A = [1 2
3 4
2 6
1 5
4 1
1 3]
然后指定我们希望第二列中的所有元素与 1
作为它们在第一列中的对应值。所以我希望上面的内容变成:
2
5
3
有谁知道如何在 MATLAB 中执行此操作?
Matlab 支持矩阵运算,所以你可以做你想做的事,而不必像其他一些语言那样显式循环遍历整个矩阵。
通过使用逻辑索引,(更多内容请见此处 https://www.mathworks.com/help/matlab/math/matrix-indexing.html?refresh=true)
您可以从矩阵中提取必要的元素。
首先,您要在满足条件的矩阵中创建一个 [0,1] 行数组。
你可以用
A(:,1) == 1
这将产生
1
0
0
1个
0
1
表示第一行、第四行和最后一行满足条件矩阵第一列的元素满足等于1的条件
现在您可以使用它来生成第二列中的元素,只需将它用作原始矩阵的索引即可。
A(A(:,1)==1,2)
生成所需的结果。
所以我在 MATLAB 中有一个 100000-by-2 矩阵。我只想提取第二列中的元素,这些元素在第一列中的对应行都具有相同的元素。例如。如果我们有:
A = [1 2
3 4
2 6
1 5
4 1
1 3]
然后指定我们希望第二列中的所有元素与 1
作为它们在第一列中的对应值。所以我希望上面的内容变成:
2
5
3
有谁知道如何在 MATLAB 中执行此操作?
Matlab 支持矩阵运算,所以你可以做你想做的事,而不必像其他一些语言那样显式循环遍历整个矩阵。
通过使用逻辑索引,(更多内容请见此处 https://www.mathworks.com/help/matlab/math/matrix-indexing.html?refresh=true) 您可以从矩阵中提取必要的元素。
首先,您要在满足条件的矩阵中创建一个 [0,1] 行数组。
你可以用 A(:,1) == 1
这将产生
1 0 0 1个 0 1
表示第一行、第四行和最后一行满足条件矩阵第一列的元素满足等于1的条件
现在您可以使用它来生成第二列中的元素,只需将它用作原始矩阵的索引即可。
A(A(:,1)==1,2)
生成所需的结果。