从特定列的CSV文件Matlab中读取数字数据?

从特定列的CSV文件Matlab中读取数字数据?,matlab,csv,Matlab,Csv,我有两个.csv文件,我正试图将它们作为数字矩阵读入Matlab。将其称为list\u a,它只包含两列ID号和相应的值(大约50000行)以及一个“,”分隔符列表b有6列,其中有一个“;”定界符。我只对包含数字的前两列感兴趣;其他列包含我不关心的文本 我最初尝试在Matlab中使用readtable函数,但注意到这些值并没有存储为数值,这是我的一个要求。我也不知道在读过它们之后如何将它们转换为整数 对于list\u a我使用了dlmread函数,我认为它可以将文件作为数值读取 对于list_b

我有两个.csv文件,我正试图将它们作为数字矩阵读入Matlab。将其称为
list\u a
,它只包含两列ID号和相应的值(大约50000行)以及一个“,”分隔符<代码>列表b有6列,其中有一个“;”定界符。我只对包含数字的前两列感兴趣;其他列包含我不关心的文本

我最初尝试在Matlab中使用
readtable
函数,但注意到这些值并没有存储为数值,这是我的一个要求。我也不知道在读过它们之后如何将它们转换为整数

对于
list\u a
我使用了dlmread函数,我认为它可以将文件作为数值读取

对于
list_b
我尝试了使用dlmread函数,在该函数中可以指定行和列偏移量()-但是,这里的问题是,文件的长度将来可能会更改,因此我不确定要为行偏移量输入什么

我也不确定我是否理解这个函数是如何工作的,因为我试着在前1000行测试它,如下所示:

csv_matrix = dlmread(csv_fullpath,';',[1 1 1000 2]);
并随后收到以下错误消息-即使“字段编号3”不应包含在第一位:

Error using dlmread (line 147)
Mismatch between file and format character vector.
Trouble reading 'Numeric' field from file (row number 1, field number 3) ==>
RandomTextInFile\n Error in Damage_List_Reader (line 15)
csv_matrix = dlmread(csv_fullpath,';',[1 1 1000 3]);

我得到的印象是,我正在使这个问题变得比它需要的困难得多,所以如果有一个全面的更好的方法来做这件事,我洗耳恭听。。谢谢

我建议将fopen与textscan结合使用(例如,对于列表a),如下所示:

file = fopen('list_a.csv');
out = textscan(file, '%d%f', 'delimiter', ',');
ID = out{1};
Vals = out{2};
“%d%f”指定FormatSpec,因此指定在文件中格式化数据的方式。有了它,您可以从csv文件中捕获任何数据(也可以省略数据)。关于进一步的格式问题,我建议阅读

注意:如果行/列的数量不固定,我认为您可以使用put和“end”(不带引号)代替其中一个行偏移量值