我想使用matlab在一个矩阵中加载一个csv文件。Textscan生成一个vectore两倍于预期的大小
我用下面的代码:
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行有额外的零行。
我还tried增加 'HeaderLines' 参数:
`X = textscan(fid, formatSpec1, 'Delimiter', '\n', 'CollectOutput', 1, 'HeaderLines', 1);`
但此时,结果是空矩阵。
我错过了什么吗?
编辑:@horchler
我没有问题阅读 'test.csv' 文件。 每行末尾没有额外的逗号。我用python脚本生成了我的csv文件:我读取了另一个csv文件的行,修改了这些行(选择其中一些并对它们进行算术运算),并将新行写入另一个csv文件。为了做到这一点,我转换的第一个CSV文件导入彩车的每个元素...
新编辑:更仔细地 阅读textscan文件,我认为这个问题是我的输入文件既不是一个文本文件也不是STR,但含有一个文件漂浮
编辑:3条从文件
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.29369 75319,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
您的CSV文件是如何创建的?你可能在每一行的末尾有一个尾随逗号?如果你通过'dlmwrite('test.csv',rand(1e3,21),',')'写了一个100行和21列的文件,你能够按照预期读取它吗? – horchler
@horchler请看编辑的问题 – bigTree
将文件上传到某处并粘贴链接,以便我们试试看。 – Oleg