我有一个大文本文件,其中包含大约1000万个唯一单词,其频率分为两列,如下所示:
apple 10
banana 21
pineapple 7
orange 9
...
我想绘制一个图表,其中频率为Y轴,字为X轴。我使用了'load'命令,但它似乎不起作用。我收到以下错误:
Error using ==> load
Unknown text on line number 1 of ASCII file C:\Users\..\Desktop\inputdata.txt
"aa"
我可以如何绘制图表的任何解决方案?
答案 0 :(得分:1)
尝试importdata
,例如:
a=importdata('inputdata.txt')
a.data
- 将输出数值向量[10,21,...]
a.textdata
- 将输出一个包含apple
,banana
等单词的单元格数组
所以如果你想根据频率排序:
[b idx]=sort(a.data,'descend')
plot(a.data(idx));
另一种选择是使用barh
,如下所示:
[b idx]=sort(a.data)
barh(a.data(idx));
set(gca,'yticklabel',a.textdata(idx))
但是,这只适用于有限的单词列表,而不是1000万......
答案 1 :(得分:0)
您无法加载.txt
文件。您需要使用文件I / O函数,例如textscan
。
fid = fopen('inputdata.txt');
data = textscan(fid, '%s%f')
fclose(fid);
data
将是1x2单元格。内容将是:
<4x1 cell> [10;21;7;9]
data{1,1}
,这是4x1单元格:
'apple'
'banana'
'pineapple'
'orange'
您可以像这样访问字符串:
data{1,1}(2)
将输出'banana'
。
并访问这样的数字:
data{1,2}(2)
会给你21,这是香蕉的相应数字。