什么是错与此[从文本文件在Matlab读取输入](Whats wrong with this [re

2019-07-18 21:24发布

我有一个文本文件(C:\ input.txt中),其中有:

2.0 4.0 8.0 16.0 32.0 64.0 128.0 256.0 512.0 1024.0 2048.0 4096.0 8192.0

在Matlab中,我想将其解读为:

data = [2.0 4.0 8.0 16.0 32.0 64.0 128.0 256.0 512.0 1024.0 2048.0 4096.0 8192.0]

我想这样的代码:

fid=fopen('c:\\input.txt','rb');
data = fread(fid, inf, 'float');
data

但我得到一些垃圾值:

data =

  1.0e-004 *

    0.0000
    0.0015
    0.0000
    0.0000
    0.0000
    0.0000
    0.0000
    0.0001
    0.0239
    0.0000
    0.0000
    0.0000
    0.0000
    0.0066
    0.0000
    0.0000
    0.0000
    0.0000
    0.0000
    0.0000
    0.0000
    0.0016
    0.0000
    0.0000
    0.0276
    0.0000
    0.3819
    0.0000
    0.0000

哪里错了吗?

Answer 1:

FREAD仅用于读取二进制文件!
对于文本文件相当于是的fscanf ,使用方法如下:

fid = fopen('c:\\input.txt','rt');
data = fscanf(fid, '%f', inf)';
fclose(fid);

或者在你的情况下,只需使用负载

data = load('c:\\input.txt', '-ascii');


有MATLAB中的其他许多方面,从文件中读取文本数据:

  • dlmread
  • textscan
  • IMPORTDATA


Answer 2:

您的文件是一个文本文件,所以你应该打开它进行文本阅读:

fid=fopen('c:\\input.txt','rt');

然后,阅读,我发现TEXTSCAN比FREAD / FSCANF更强大(所有总结它们之间的差异在这里

data = textscan(f, '%f')

返回一个单元阵列。 你可以在与内容

>> data{1}

ans =

       2
       4
       8
      16
      32
      64
     128
     256
     512
    1024
    2048
    4096
    8192

TEXTREAD是很容易,TEXTSCAN使用,但根据文档现在已经过时。



文章来源: Whats wrong with this [reading input from a text file in Matlab]?