1

我有一个包含大约 1000 万个唯一单词的大型文本文件,它们在两列中出现频率,如下所示:

apple 10
banana 21
pineapple 7
orange 9
...

我想绘制一个图表,Y 轴为频率,X 轴为单词。我使用了“加载”命令,但它似乎不起作用。我收到以下错误:

Error using ==> load
Unknown text on line number 1 of ASCII file C:\Users\..\Desktop\inputdata.txt
"aa"

关于如何绘制图表的任何解决方案?

4

2 回答 2

1

试试importdata,例如:

 a=importdata('inputdata.txt')

a.data- 将输出数值向量,[10,21,...]

a.textdata - 将输出一个包含单词、、 applebanana的元胞数组

所以如果你想按频率排序:

[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 万……

于 2013-02-04T07:38:47.550 回答
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,这是香蕉的对应数字。

于 2013-02-04T07:38:49.820 回答