csvread在MATLAB中删除行
我在5列中创建一些随机数据,并将其存储为CSV文件。这很好,我的CSV实际上包含1001行;我的数据带有标题(我通过在电子表格编辑器中打开它来检查)。但是,当我在MATLAB中使用csvread在MATLAB中删除行,matlab,csv,file-writing,Matlab,Csv,File Writing,我在5列中创建一些随机数据,并将其存储为CSV文件。这很好,我的CSV实际上包含1001行;我的数据带有标题(我通过在电子表格编辑器中打开它来检查)。但是,当我在MATLAB中使用csvread再次读取它时,如果我没有指定分隔符,并且当我指定分隔符时,data仅包含957行,则会出现一个错误,因此缺少标题和前42行。这是怎么回事 代码: 错误: 使用dlmread时出错(第139行) 文件和格式字符串之间不匹配。 从文件中读取数字时出现问题(第1u行,第1u字段)==>ColumnA,Colum
csvread
再次读取它时,如果我没有指定分隔符,并且当我指定分隔符时,data
仅包含957行,则会出现一个错误,因此缺少标题和前42行。这是怎么回事
代码:
错误:
使用dlmread时出错(第139行)
文件和格式字符串之间不匹配。
从文件中读取数字时出现问题(第1u行,第1u字段)==>ColumnA,ColumnB,ColumnC,ColumnD,ColumnE\n
csvread中的错误(第48行)
m=dlmread(文件名,,,r,c)
我在写或读文件时是否遗漏了一些愚蠢的东西
我正在64位Windows7机器上运行MatlabR2012A。(尽管我希望在下个月升级到R2015b)原因是您使用的是无效的
csvread
语法。从帮助csvread
:
M=csvread('FILENAME')读取逗号分隔值格式的文件
文件名。结果以M为单位返回。该文件只能包含
数值
M=csvread('FILENAME',R,C)从逗号分隔的值读取数据
从R行和C列开始的格式化文件。R和C为零-
以使R=0和C=0指定文件中的第一个值
M=csvread('FILENAME',R,C,RNG)只读取指定的范围
通过RNG=[R1 C1 R2 C2],其中(R1,C1)是
要读取的数据和(R2,C2)位于右下角。RNG
也可以使用电子表格符号指定,如RNG='A1..B7'中所示
您不能告诉csvread
要使用什么分隔符。当您这样称呼它时,它将“
解释为数字44(ascii)并将其用作起始行
改为调用它:
data=csvread('output.csv',1)代码>原因是您使用的是无效的csvread
语法。从帮助csvread
:
M=csvread('FILENAME')读取逗号分隔值格式的文件
文件名。结果以M为单位返回。该文件只能包含
数值
M=csvread('FILENAME',R,C)从逗号分隔的值读取数据
从R行和C列开始的格式化文件。R和C为零-
以使R=0和C=0指定文件中的第一个值
M=csvread('FILENAME',R,C,RNG)只读取指定的范围
通过RNG=[R1 C1 R2 C2],其中(R1,C1)是
要读取的数据和(R2,C2)位于右下角。RNG
也可以使用电子表格符号指定,如RNG='A1..B7'中所示
您不能告诉csvread
要使用什么分隔符。当您这样称呼它时,它将“
解释为数字44(ascii)并将其用作起始行
改为调用它:data=csvread('output.csv',1)代码>首先,在Matlab2014b上,我有一个不同的错误
使用dlmread时出错(第138行)
标题行必须是整数值。
csvread中的错误(第47行)
m=dlmread(文件名,,,r,c)
在MATLAB中,我通常通过其数据导入接口导入数据。在主页
选项卡上,单击导入数据
,您可以在这里使用许多选项来确保数据导入正确。界面最好的部分是代码生成功能。您可以选择生成MATLAB实际用于导入数据的代码。例如,我得到的是:
filename = 'output.csv';
delimiter = ',';
startRow = 2;
formatSpec = '%f%f%f%f%f%[^\n\r]';
fileID = fopen(filename,'r');
dataArray = textscan(fileID, formatSpec, 'Delimiter', delimiter, 'HeaderLines', startRow-1, 'ReturnOnError', false);
fclose(fileID);
ColumnA = dataArray{:, 1};
ColumnB = dataArray{:, 2};
ColumnC = dataArray{:, 3};
ColumnD = dataArray{:, 4};
ColumnE = dataArray{:, 5};
clearvars filename delimiter startRow formatSpec fileID dataArray ans;
它工作正常。如您所见,您可以轻松地修改代码以根据需要定制导入函数 首先,在Matlab2014b上,我有一个不同的错误
使用dlmread时出错(第138行)
标题行必须是整数值。
csvread中的错误(第47行)
m=dlmread(文件名,,,r,c)
在MATLAB中,我通常通过其数据导入接口导入数据。在主页
选项卡上,单击导入数据
,您可以在这里使用许多选项来确保数据导入正确。界面最好的部分是代码生成功能。您可以选择生成MATLAB实际用于导入数据的代码。例如,我得到的是:
filename = 'output.csv';
delimiter = ',';
startRow = 2;
formatSpec = '%f%f%f%f%f%[^\n\r]';
fileID = fopen(filename,'r');
dataArray = textscan(fileID, formatSpec, 'Delimiter', delimiter, 'HeaderLines', startRow-1, 'ReturnOnError', false);
fclose(fileID);
ColumnA = dataArray{:, 1};
ColumnB = dataArray{:, 2};
ColumnC = dataArray{:, 3};
ColumnD = dataArray{:, 4};
ColumnE = dataArray{:, 5};
clearvars filename delimiter startRow formatSpec fileID dataArray ans;
它工作正常。如您所见,您可以轻松地修改代码以根据需要定制导入函数 当我不使用分隔符,而是调用data=csvread('output.csv')时,会出现错误代码>当我使用分隔符时,它工作正常,但会删除行。我想我得用1,干杯了。我觉得有点像擦洗,因为我没有正确阅读文档~.~@Adriaan,确实是这样,这就是为什么我建议使用1:)我想如果你不指定起始行,matlab不会试图推断文件中是否有字符串头行,而是从将其解释为数字数据开始,因此出现了错误。不要对自己太苛刻,众所周知,matlab的内置数据解析函数很古怪。当我不使用分隔符,而是调用data=csvread('output.csv')时,就会出现错误代码>当我使用分隔符时,它工作正常,但会删除行。我想我得用1,干杯了。我觉得有点像擦洗,因为我没有正确阅读文档~.~@Adriaan,确实是这样,这就是为什么我建议使用1:)我想如果你不指定起始行,matlab不会试图推断文件中是否有字符串头行,而是从将其解释为数字数据开始,因此出现了错误。不要对自己太苛刻,众所周知,matlab的内置数据解析功能很古怪。通过GUI导入数据非常难看,效率也很低,尤其是在将文件读取器与dir()结合使用时,一次读取大量文件。我使用GUI的原因是为了获取用于导入结构非常奇怪的数据集的代码。一旦我拿到密码,我就不知道了