MATLAB - 需要从文本列文件制作元胞数组
MATLAB - Need to make a cell array from a text column file
我有一个来自 UCI 机器学习 (Abalone Database) 的数据库,我需要将第一列 character
与其他列 double
分开.
我已经有了这个代码的第二部分:
abaloneData = csvread('abalone.data',0,1);
为了在 KNN 上使用第一部分,我尝试了很多次,但每次都失败了。
谢谢。
编辑 1:
read_data.m
function [features, labels] = read_data()
features = csvread('abalone.data',0,1);
fileID = fopen('abalone.data');
data = textscan(fileID,'%s %*[^\n]', 'Delimiter',',');
fclose(fileID);
labels = cell2mat(data{1});
end
knn.m
[features,labels] = read_data();
Mdl = fitcknn(features,labels);
如果每行的列数相同,您可以尝试使用 textscan
:
fp=fopen('f.txt','rt')
a=textscan(fp,'%c%f%f%f%f%f%f%f%f','delimiter',',')
fclose(fp)
cellarray
包含存储在文件中的数据。
其大小应为 (1xn),其中“n
”是文件的列数。
您现在可能已经意识到,问题是 csvread()
仅适用于数值。相反,您需要使用 textscan()
来处理字符串/字符。试试这个:
fileID = fopen('abalone.data');
data = textscan(fileID,'%s %*[^\n]', 'Delimiter',',');
fclose(fileID);
labels = cell2mat(data{1});
这将打开文件并将第一列作为字符串读取,跳过每一行中的其余元素。最后,此数据从单元格转换为名为 labels
的字符向量
我有一个来自 UCI 机器学习 (Abalone Database) 的数据库,我需要将第一列 character
与其他列 double
分开.
我已经有了这个代码的第二部分:
abaloneData = csvread('abalone.data',0,1);
为了在 KNN 上使用第一部分,我尝试了很多次,但每次都失败了。
谢谢。
编辑 1:
read_data.m
function [features, labels] = read_data()
features = csvread('abalone.data',0,1);
fileID = fopen('abalone.data');
data = textscan(fileID,'%s %*[^\n]', 'Delimiter',',');
fclose(fileID);
labels = cell2mat(data{1});
end
knn.m
[features,labels] = read_data();
Mdl = fitcknn(features,labels);
如果每行的列数相同,您可以尝试使用 textscan
:
fp=fopen('f.txt','rt')
a=textscan(fp,'%c%f%f%f%f%f%f%f%f','delimiter',',')
fclose(fp)
cellarray
包含存储在文件中的数据。
其大小应为 (1xn),其中“n
”是文件的列数。
您现在可能已经意识到,问题是 csvread()
仅适用于数值。相反,您需要使用 textscan()
来处理字符串/字符。试试这个:
fileID = fopen('abalone.data');
data = textscan(fileID,'%s %*[^\n]', 'Delimiter',',');
fclose(fileID);
labels = cell2mat(data{1});
这将打开文件并将第一列作为字符串读取,跳过每一行中的其余元素。最后,此数据从单元格转换为名为 labels