首页 文章

使用字符和数字将制表符分隔文件导入MATLAB

提问于
浏览
0

我试图导入一个使用包含四列的Fortran程序创建的文件:原子符号,X位置,Y位置,Z位置 . 这是输入文件的示例:

Zn               0.00000000000       0.00000000000       0.00000000000
Zn               0.00000000000       0.00000000000       0.25000000000
Zn               0.00000000000       0.00000000000       0.50000000000
Zn               0.00000000000       0.00000000000       0.75000000000
Zn               0.00000000000       0.05000000000       0.00000000000
Zn               0.00000000000       0.05000000000       0.25000000000
Zn               0.00000000000       0.05000000000       0.50000000000
Zn               0.00000000000       0.05000000000       0.75000000000

现在,如果我在excel中导入它并导出为CSV文件然后使用csvread(filename),则会产生错误,因为第一列具有字符输入,因此会产生错误 . (我确信有一种方法可以直接导入制表符分隔文件而无需这个中间步骤,但我一直在使用这种方法 . )

我试过的事情:

  • 在导入MATLAB之前删除第一列 . 这个问题是我将处理具有多种原子类型的化合物,我希望能够跟踪它们 .

  • 我知道我可以使用double(变量)和char(变量)将字符转换为数字数组,但在将第一列更改为数字数组之前,我仍然需要能够导入文件 .

我很感激任何建议 .

2 回答

  • 0

    你可以试试这个

    fid = fopen('test.dat');
    %one string and 3 numbers
    format= '%s %f %f %f';
    C = textscan(fid);
    fclose(fid);
    % C is now [{8x1cell} {8x1double} {8x1double} {8x1double}]
    %get the content from C(1) and make a cell array out of C(2:4)  
    C= [C{:,1} num2cell([C{2:4}])];
    
  • 0

    %%您可以使用readtable直接导入数据(它接受.txt,.dat或.csv和电子表格格式) .

    %使用readtable将数据导入为表

    data = readtable('filename.txt', 'Delimiter', 'tab');
    

    %%有关函数的更多信息,请参阅http://www.mathworks.com/help/matlab/ref/readtable.html .

    %%有关表格的详细信息,请参阅http://www.mathworks.com/help/matlab/tables.html .

相关问题