我想使用 matlab 在矩阵中加载一个 csv 文件。
我使用了以下代码:
formatSpec = ['%*f', repmat('%f',1,20)];
fid = fopen(filename);
X = textscan(fid, formatSpec, 'Delimiter', ',', 'CollectOutput', 1);
fclose(fid);
X = X{1};
csv 文件有 1000 行和 21 列。但是,生成的矩阵 X 有 2000 列和 20 列。
我尝试使用不同的分隔符,如 '\t' 或 '\n',但它没有改变。当我显示 X 时,我注意到它显示了正确的 csv 文件,但每 2 行有额外的零行。
我还尝试添加“HeaderLines”参数:
`X = textscan(fid, formatSpec1, 'Delimiter', '\n', 'CollectOutput', 1, 'HeaderLines', 1);`
但这一次,结果是一个空矩阵。
我错过了什么吗?
编辑:@horchler
我可以毫无问题地阅读“test.csv”文件。每行末尾没有多余的逗号。我使用 python 脚本生成了我的 csv 文件:我读取了另一个 csv 文件的行,修改了这些行(选择其中一些并对它们进行算术运算)并将新行写入另一个 csv 文件。为了做到这一点,我将第一个 csv 文件的每个元素转换为浮点数......
新编辑:更仔细地阅读 textscan 文档,我认为问题在于我的输入文件既不是文本文件也不是 str,而是包含浮点数的文件
编辑:文件中的三行
0,1,0,0,0,1,0,0,0,1,0,0,0,1,0,0,1,0,0,0,2 1,-0.3834323,-1.92452324171,- 1.2453254094,0.43455627857,-0.24571121,0.4340657,1,1,0,0,0,0.3517396202,1,0,0,0.3558122164,0.2936975319,0.4105696144,0,1,0 -0.78676,-1.09767,0.765554578,0.76579043,0.76, 1,0,0,323124.235998,1,0,0,0,1,0,0,1,0,0,0,2