在MATLAB中评估字符串单元格

时间:2014-10-19 19:26:44

标签: string matlab matrix

我有,

labels = {'A' , 'B' , 'C'};

results =
           A
           A
           C
           .
           .
           B

result1000*1 字符

我希望将labelsresults进行比较,然后获取逻辑数组。

我终于找到了,

n = cellstr(results);
m = 'A';
strcmp(n,m)

有效,但我想循环播放,所以我不能m = 'A';,它应该是m = labels(1);,这将无效。

2 个答案:

答案 0 :(得分:2)

像这样使用ismemberv就像cellstr(result)一样):

>> labels = {'A' , 'B' , 'C'};
>> v = cellstr(char(randi(15,20,1)+64)).' %' uni. random sample of letters from A to O

v = 

  Columns 1 through 10

    'M'    'D'    'I'    'J'    'A'    'J'    'F'    'A'    'H'    'C'

  Columns 11 through 20

    'B'    'D'    'C'    'C'    'A'    'J'    'E'    'I'    'K'    'H'

>> [lia,locb] = ismember(v,labels)

lia =

  Columns 1 through 12

     0     0     0     0     1     0     0     1     0     1     1     0

  Columns 13 through 20

     1     1     1     0     0     0     0     0


locb =

  Columns 1 through 12

     0     0     0     0     1     0     0     1     0     3     2     0

  Columns 13 through 20

     3     3     1     0     0     0     0     0

这可能有助于澄清产出:

>> v(lia)

ans = 

    'A'    'A'    'C'    'B'    'C'    'C'    'A'

>> labels(locb(lia))

ans = 

    'A'    'A'    'C'    'B'    'C'    'C'    'A'

在其他作品中,find(lia)vlabels中存在的字符中的索引,locb(lia)将索引转换为labels那些元素。

答案 1 :(得分:0)

尝试这样的事情:

n = cellstr(results);

for k=1:3
  m = labels(k);
  strcmp(n,m);
end