Matlab 创建带有字符标签的prtools数据集prdataset()时出错

Matlab 创建带有字符标签的prtools数据集prdataset()时出错,matlab,statistics,dataset,Matlab,Statistics,Dataset,我在创建prtools数据集时遇到问题。 函数prdataset返回一个错误: Error using prdataset (line 266) Illegal datatype Error in LoadData (line 35) prdat=prdataset(data,labels,'featlab',featlab); 我检测到错误是由'labels'(第2个参数)引起的,它是一个字符矩阵(参见图),应该是prdataset函数接受的类型之一(是整数或字符) 这是我的代码: % P

我在创建prtools数据集时遇到问题。 函数prdataset返回一个错误:

Error using prdataset (line 266)
Illegal datatype

Error in LoadData (line 35)
prdat=prdataset(data,labels,'featlab',featlab);
我检测到错误是由'labels'(第2个参数)引起的,它是一个字符矩阵(参见图),应该是prdataset函数接受的类型之一(是整数或字符)

这是我的代码:

% Parameters
Nfeatures=16;
Ninstances=20000;
Ntr_inst=16000;
Ntst_inst=Ninstances-Ntr_inst;

% Load file
fid = fopen('letter-recognition.data');
parsed_file = textscan(fid,'%c%u8%u8%u8%u8%u8%u8%u8%u8%u8%u8%u8%u8%u8%u8%u8%u8','delimiter',',');
fclose(fid);
data=cell2mat(parsed_file(2:Nfeatures+1));
labels=parsed_file{1};
featlab=[ ...
    'x-box'; ...    %horizontal position of box (integer)
    'y-box'; ...    %vertical position of box   (integer)
    'width'; ...    %width of box (integer)
    'hight'; ...    %height of box (integer)
    'onpix'; ...    %total # on pixels (integer)
    'x-bar'; ...    %mean x of on pixels in box (integer)
    'y-bar'; ...    %mean y of on pixels in box (integer)
    'x2bar'; ...    %mean x variance (integer)
    'y2bar'; ...    %mean y variance (integer)
    'xybar'; ...    %mean x y correlation (integer)
    'x2ybr'; ...    %mean of x * x * y (integer)
    'xy2br'; ...    %mean of x * y * y (integer)
    'x-ege'; ...    %mean edge count left to right (integer)
    'xegvy'; ...    %correlation of x-ege with y (integer)
    'y-ege'; ...    %mean edge count bottom to top (integer)
    'yegvx'; ...    %correlation of y-ege with x (integer)
];

prdat=prdataset(data,labels,'featlab',featlab);

% Separate train and test
[prtrain, prtest]=gendat(pr_data,Ntr_inst);

% Save dataset
save('letter-recognition-prdataset.mat', 'prtrain', 'prtest');
导致错误的行是
prdat=prdataset(数据、标签、'featlab',featlab);
此图显示labels变量的类型

我做错了什么


谢谢

我终于发现了。这与标签无关。prdataset需要
double
数据。由于
文本扫描中的
%u8
,我有
uint8
添加
double(数据)
成功了