根据标题Matlab读取ASCII文件

时间:2017-02-01 22:14:32

标签: matlab bigdata

我有一个这样的文件:

ID  LHW  dms  
1   105.28 1 
2   357.01 0 
3   150.23 3

我的问题是,是否可以根据标题获得一个列值?我当然可以通过其列位置2获得LHW,但我想通过阅读LHW来获得它。

这样做的原因是我有两个大型数据集(约50 000 rows x 80 columns)具有相同的变量,但位于不同的位置。如果我能根据标题得到正确的列值,那么可以节省大量的编程时间。

提前致谢!

1 个答案:

答案 0 :(得分:2)

我不知道您的目的是否存在某些内置函数。但我们可以手动创建它。例如:

function [result] = readByName( A, filename )
if ~ischar(A) % check input parameter (you can delete this sectionif you want)
    display('Error: First argument must be a char array!');
    massiv = -1;
    return
end

fileID = fopen(filename);                       % open file
title = textscan(fileID, '%s',3);               % read title
number = cellfun( @(x) strcmp(x,A), title{1});  % find wanted column  

if ~any(number)   % one more check
    display('Error: wrong name of the first argument');
    massiv = -1;
    return
end

data = textscan(fileID, '%f %f %f');     % read data
result = data{ number==1 };              % get wanted column
end

其实施示例:

readByName('ID', 'yourdata.txt')

答案:

ans =

 1
 2
 3

现在您只需按名称加载数据即可。现在,如果您的列名相同,则需要对其进行一些修改。

希望它有所帮助!