2

我有一个包含数千个属性的文本文件(每列表示一个属性)和一个显示每行标签的列。所有数据都是数字,除了最后一列是标签。此列是字符串。我想使用诸如 gscatter() 之类的 matlab 分类函数对数据进行分类。问题是当我在 matlab 中使用加载文件名来加载我的数据时,我得到了这个错误(其中“no”是标签之一)

ASCII 文件 C:\Program Files\MATLAB\R2011b\train\train.txt 的第 1 行上的未知文本“否”。

事实上,我不知道如何在 matlab 中加载我的数据,以便能够使用 matlab 函数对数据进行分类。

4

2 回答 2

2

加载仅适用于只有数字数据的 .mat 文件和文本文件,这就是您收到错误的原因。

不过,有许多函数可以读取文本文件。根据数据文件的格式,您可以使用以下方法之一:

  • textread非常通用,但需要您提供格式并打开和关闭文件。
  • csvread仅读取以逗号分隔的数字值,但您不必提供格式。
  • importdata很通用也很方便
  • fscanf类似于 textread

鉴于您要处理的属性数量,我肯定会选择importdata自己。

于 2012-06-03T17:02:56.227 回答
1

这是一个例子

火车.txt

1,2,3,4,5,6,no
2,3,4,5,6,7,yes

myLoadScript.m

numAttribs = 6;        %# number of attributes (excluding the label)
frmt = [repmat('%f ',1,numAttribs) '%s'];
fid = fopen('train.txt', 'rt');
C = textscan(fid, frmt, 'Delimiter',',', 'CollectOutput',1);
fclose(fid);

结果:

>> C{1}
ans =
     1     2     3     4     5     6
     2     3     4     5     6     7

>> C{2}
ans = 
    'no'
    'yes'

应该很容易适应您的特定文件格式...

于 2012-06-03T19:25:08.250 回答