我有38行和7130列的微阵列数据。我正在尝试读取数据,但仍然存在上述错误。
我调试并发现当我读取数据时,我有1x7129而不是38x7130。我不知道为什么。我的第7130列包含字母,而其余数据是数字。知道为什么会这样吗?
我的文件位于文本制表符分隔符中,这是我读取文件的代码:
clear;
fn=32;
col=fn+1;
cluster=2;
num_eachClass=3564;
row=num_eachClass*cluster;
fid1 = fopen('data.txt', 'r');
txt_format='';
for t=1:col txt_format=[txt_format '%g '];
end
data = fscanf(fid1,txt_format,[col row]);
data = data'; fclose(fid1);
答案 0 :(得分:0)
尝试使用此代码读取数据:
filename = 'yourfilename.txt';
fid = fopen(filename,'r');
% If you have a line with column headers use those 3 lines. Comment if not.
colnames = fgetl(fid);
colnames = textscan(colnames, '%s','delimiter','\t');
colnames = colnames{:};
% Reading the data
tsformat = [repmat('%f ',1,7129) '%s'];
datafromfile = textscan(fid,tsformat,'delimiter','\t','CollectOutput',1);
fclose(fid);
% Get the data from the cell array
data = datafromfile{1};
labels = datafromfile{2};
修改强> 要将数据集分为培训和测试,请执行以下操作:
train_samp = 1:19;
test_samp = 20:38;
train_data = data(train_samp,:);
test_data = data(test_samp,:);
train_label = labels(train_samp);
test_label = labels(test_samp);
您也可以随机分开样本:
samp_num = size(data,1);
test_num = 19;
randorder = randperm(samp_num);
train_samp = randorder(test_num+1:samp_num);
test_samp = randorder(1:test_num);
我还没有完成换位data = data';
。
如果必须,只需在上面的代码中切换行索引和列索引:
train_data = data(:,train_samp);
test_data = data(:,test_samp);