如何制作具有其他两个矩阵的排他值的第三个矩阵,具有多列?

  • 本文关键字:三个 两个 其他 何制作 matlab matrix
  • 更新时间 :
  • 英文 :


我正在尝试创建一个包含 n 行和 7 列的新矩阵,但我的代码只输出第一列。

%sample values
table_a = [161.0972   11.0000   14.0000    1.0000         0         0         0;
163.0401    9.0000    8.0000    3.0000         0         0         0;
163.0765   10.0000   12.0000    2.0000         0         0         0;
163.1129   11.0000   16.0000    1.0000         0         0         0;
165.0194    8.0000    6.0000    4.0000         0         0         0;
165.0558    9.0000   10.0000    3.0000         0         0         0;
165.0922   10.0000   14.0000    2.0000         0         0         0]

table_b = [163.0401    9.0000    8.0000    3.0000         0         0         0;
163.0765   10.0000   12.0000    2.0000         0         0         0;
165.0558    9.0000   10.0000    3.0000         0         0         0;
165.0922   10.0000   14.0000    2.0000         0         0         0;
167.0350    8.0000    8.0000    4.0000         0         0         0;
167.0714    9.0000   12.0000    3.0000         0         0         0;
169.0143    7.0000    6.0000    5.0000         0         0         0]

table_c = table_a(~ismember(table_a(:, 1:7), table_b(:, 1:7)));

这就是我的结果:

table_c =
163.0401    
163.0765  
165.0922

这是我期望的结果:

table_c = 
163.0401    9.0000    8.0000    3.0000         0         0         0
163.0765   10.0000   12.0000    2.0000         0         0         0
165.0922   10.0000   14.0000    2.0000         0         0         0

您的代码当前执行以下操作:

filter = ~ismember(table_a(:, 1:7), table_b(:, 1:7));
table_c = table_a(filter);

这将选择具有filter(x) = true的所有table_a(x)

您希望选择满足条件的table_a,但选择这些行的所有列。 为此,您必须告诉 Matlab 选择这些行以及所有table_a

table_c = table_a(filter, :);

或者在一行中,

table_c = table_a(~ismember(table_a(:, 1:7), table_b(:, 1:7)), :);

为了澄清,Matlab 将其 2D 数组存储为列主数组。带矩阵

A = [0, 1, 2;
3, 4, 5;
6, 7, 8];

A(i)选择列主序数组中的第i个元素,因此A(4)会给你1.A(i, j)选择矩阵的第i行和第j列。

相关内容

  • 没有找到相关文章

最新更新