如何通过Matlab中的标头访问数据帧中的数据?

时间:2018-07-12 11:47:53

标签: matlab dataframe

我有一个扩展名为XLS的文件。当我在Excel中打开它时,它具有带有标题的列。我想通过其标题在Matlab的每一列中获取数值数据。例如,当我尝试数据('y')时,我得到了错误。

3 个答案:

答案 0 :(得分:1)

使用xlsread

[data, header] = xlsread('myfilelocation','sheetname');
如果xls文件仅包含一张纸或者它是您要读取的第一张纸,则可以跳过

sheetname,即xlsread('myfilelocation')

然后您可以搜索标题

myHeaders = {'X','Y','Z'};
for i = 1:numel(myHeaders)
    data(:,i) = data(:,strcmp(header, myHeaders{i}));
end

请注意,xlsread的第二个输出不一定是标头,而是所有非数字数据。如果您的xls工作表确实包含标题文本以外的其他内容,则应使用header(1,:)提取标题文本。

答案 1 :(得分:1)

最有效的方法是使用readtable,因为该功能会自动为您检测标题。

读取表并将其存储在表T中:

T = readtable('yourfile.xls');

然后只需使用点表示法即可访问您的数据。例如,要访问第一列中包含的数据,您只需使用标题的名称即可(例如 FirstColumnHeader ):

DataFirstColumn = T.FirstColumnHeader

答案 2 :(得分:0)

这是一个演示代码,

filename = %name of the file;
delimiter = {','}; %it's comma separated, can be changed
startRow = 3;
fileID = fopen(filename,'r');
formatSpec = '%f%f[^\n\r]'; %reading first two column only. can be changed.
dataArray = textscan(fileID, formatSpec, 'Delimiter', delimiter, 'TextType','string', 'HeaderLines' ,startRow-1, 'ReturnOnError', false, 'EndOfLine','\r\n');
fclose(fileID);