根据Matlab中2个单元格变量之间的匹配添加新列

时间:2014-09-07 11:41:44

标签: matlab match cell cell-array

我有一个包含30000行和20列的单元格类型变量A:

A={12   1985    54,4678175115029    100 21  49  false   48,4    0   0   0 ...
     13 1985    46,4181591120695    189 22  44  false   51,8    0   0   0
     16 1985    53,0972274761171    183 22  12  false   48,6    0   0   0
     12 1986    43,1279032643053    173 22  14  false   48,6    0   0   0}

具有300行和1列的单元格类型变量B:

B={17
  12
  74
  16
  117
  870
  ...}

如果变量B与A的第一行匹配,我试图将A列添加到A中。例如,在此示例中,我将得到:

  A={12 1985    54,4678175115029    100 21  49  false   48,4    0   0   0 12...
     13 1985    46,4181591120695    189 22  44  false   51,8    0   0   0 []
     16 1985    53,0972274761171    183 22  12  false   48,6    0   0   0 16
     12 1986    43,1279032643053    173 22  14  false   48,6    0   0   0 12}

A中可能存在重复值(参见最后一行)。在那种情况下,再次重复比赛。 我相信我必须使用ismember,但我没有成功。

谢谢。

1 个答案:

答案 0 :(得分:2)

你的直觉是正确的,ismember可以在这里使用。

看看这是否适合你 -

[v1,v2] = ismember(cell2mat(A(:,1)),cell2mat(B))
A(v1,end+1) = B(v2(v2~=0))