1

我有一个包含句子字符串的元胞数组 x 的元胞数组,我想在 x 中找到所有唯一单词标记的列表,然后使用它为数组结构 y 创建字段名(如果该字段名尚不存在)对于 y。现在我正在使用双 for 循环遍历 x 中的每个句子字符串,然后遍历每个单独的唯一单词以完成任务,但是当元胞数组包含太多字符串时,它可能会很慢。

for i=1:length(x)
    unique = unique(x{i});
    for j=1:length(unique)
            y.(unique{j}) = {};
    end
end

样本输入:

x = {{'hello', 'world'}, {'foo', 'bar'}, {'eat', 'foo', 'ice', 'cream'}, {'hello', 'dad'}};
y = {};

那么 unique 应该是这样的

unique = {'hello', 'world', 'foo', 'bar', 'eat', 'ice', 'cream', 'dad'}

和结构数组 y 应该具有唯一的所有单词标记作为字段名称。所以应该有一个 y.hello、y.world、y.foo、y.bar、y.eat、y.ice、y.cream 和 y.dad。只要根据需要输出 y,单词标记的唯一列表就不是必需的。有什么方法可以通过矢量化或其他方式来简化这些操作以使程序运行得更快?谢谢。

4

1 回答 1

5

你为什么要unique为文字做事?如果您只是为每个单词构建一个空单元格,那么您为什么要关心是否多次创建它呢?最后只剩下一个。

>> x = unique( [x{:}] );
>> y = cell2struct( cell(1, numel(x)), x, 2 )

y = 

      bar: []
    cream: []
      dad: []
      eat: []
      foo: []
    hello: []
      ice: []
    world: []
于 2013-03-04T07:44:54.753 回答