MatLab Map - 指定的键类型不匹配必需

时间:2014-09-15 02:29:34

标签: matlab

我试图制作一个读取文件的程序(用于作业),然后计算每个单词的使用次数。为了有效地解决问题,我决定将所有唯一的单词映射到键,然后在每次单词出现时递增键值。

function [] = problem2
    file_open = fopen('austen.txt');
    complete_string = textscan(file_open, '%s');

    numel(complete_string{1,1})

    unique_words = unique(complete_string{1,1});
    length(unique_words);
    frequency = zeros(numel(unique_words), 1);

    found_frequency = containers.Map(unique_words, frequency);

    for i=1:numel(complete_string{1,1})
       found_frequency(complete_string{1,1}(i)) = found_frequency(complete_string{1,1}(i))+1; 
    end

    fclose(file_open)

可悲的是,这段代码不起作用。当该行出现增量时,我收到一条错误,指出"指定的键类型与此容器的预期类型不匹配",这对我没有意义 - 我使用字符串作为键。关于我为什么会收到此错误的任何想法?

1 个答案:

答案 0 :(得分:0)

问题在于使用Cell类型 - complete_String {1,1}(i)实际上会返回一个Cell而不是一个String(尽管如此)。用char(*)包装它并且工作正常。