在MATLAB中使用FREAD读取数字文本文件

时间:2013-12-12 20:35:11

标签: matlab text file-io fread bcp

我知道fread可用于读取二进制数据。我在某处读到它也可以读取文本文件。我有一个使用BCP实用程序和SQL Server生成的数字文本文件。我试图在Matlab中读取这个庞大的数据。在我的情况下,textscanfscanf速度很慢。 fread读取数据并输出其ASCII值。有没有办法可以使用fread正确读取数据?由于文本文件很大,fread可以为我提供更快的解决方案。

BCP“SELECT 3,1 UNION ALL SELECT 9,13”queryout“Trial.txt”-c t“,” - S“srvr”-U“login”-P“pwrd”

%在Matlab中 - >

    fid = fopen('Trial.txt','r') ;
    fread(fid)
    fclose(fid);

ASCII输出:

51                 % Ascii Char for 3 (http://www.asciitable.com/)
44                 % ...............,
49                 % ...............1
13                 % ...............carriage return
10
57
44
.......

2 个答案:

答案 0 :(得分:0)

你试过这个:

s = regexp(fileread('Trial.txt'), '(\r\n|\n|\r)', 'split');

或者您可以使用:

fread(fid,'*char')

答案 1 :(得分:0)

你几乎拥有它。只需在char之后使用fread将读取的字节解释为ASCII字符。如果您想要行向量而不是列向量,还要添加.'

fid = fopen('Trial.txt','r');
chars = char(fread(fid)).';
fclose(fid);