如何像在R中一样在matlab中读取csv文件?

8 csv matlab r import-from-csv

我有一个数据集保存为.csv文件,如下所示:

Name,Age,Password
John,9,\i1iiu1h8
Kelly,20,\771jk8
Bob,33,\kljhjj
Run Code Online (Sandbox Code Playgroud)

在RI中可以通过以下方式打开此文件:

X = read.csv("file.csv",header=TRUE)
Run Code Online (Sandbox Code Playgroud)

在Matlab中是否有一个默认命令,它读取带有数字和字符串变量的.csv文件? csvread似乎只喜欢数字变量.

更进一步,在RI中可以使用attach函数来创建与数据集的列和列标题相关联的变量,即,

attach(X)
Run Code Online (Sandbox Code Playgroud)

Matlab中有类似的东西吗?

Col*_*ers 6

虽然这个问题接近完全重复,但@NathanG提供的链接(即使用xlsread)中提出的解决方案只是解决问题的一种可能方法.链接中的作者也建议使用textscan,但不提供有关如何操作的任何信息,所以我想我在这里添加一个例子:

%# First we need to get the header-line
fid1 = fopen('file.csv', 'r');
Header = fgetl(fid1);
fclose(fid1);

%# Convert Header to cell array
Header = regexp(Header, '([^,]*)', 'tokens');
Header = cat(2, Header{:});

%# Read in the data
fid1 = fopen('file.csv', 'r');
D = textscan(fid1, '%s%d%s', 'Delimiter', ',', 'HeaderLines', 1);
fclose(fid1);
Run Code Online (Sandbox Code Playgroud)

Header现在应该是单元格的行向量,其中每个单元格存储一个标题.D是单元格的行向量,其中每个单元格存储一列数据.

没有办法,我知道的,以"附加" DHeader.如果你想,你可以把它们放在同一个结构中,即:

S.Header = Header;
S.Data = D;
Run Code Online (Sandbox Code Playgroud)