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

的字符向量