这个[从Matlab中的文本文件读取输入]有什么问题?

这个[从Matlab中的文本文件读取输入]有什么问题?,matlab,file-io,formatting,input,Matlab,File Io,Formatting,Input,我有一个文本文件(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

我有一个文本文件(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

哪里出错了?

fread仅用于读取二进制文件
文本文件的等效项为,使用方法如下:

fid = fopen('c:\\input.txt','rt');
data = fscanf(fid, '%f', inf)';
fclose(fid);
或者在您的情况下,只需使用

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

在MATLAB中,还有许多其他方法可以从文件中读取文本数据:


fread仅用于读取二进制文件
文本文件的等效项为,使用方法如下:

fid = fopen('c:\\input.txt','rt');
data = fscanf(fid, '%f', inf)';
fclose(fid);
或者在您的情况下,只需使用

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

在MATLAB中,还有许多其他方法可以从文件中读取文本数据:


您的文件是文本文件,因此您应该打开它进行文本读取:

fid=fopen('c:\\input.txt','rt');
然后,对于阅读,我发现TEXTSCAN比FREAD/FSCANF更强大(它们之间的差异都被总结出来)

返回一个单元格数组。您可以使用

>> data{1}

ans =

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

TEXTREAD比TEXTSCAN更易于使用,但根据文档,现在已经过时。

您的文件是文本文件,因此您应该打开它进行文本读取:

fid=fopen('c:\\input.txt','rt');
然后,对于阅读,我发现TEXTSCAN比FREAD/FSCANF更强大(它们之间的差异都被总结出来)

返回一个单元格数组。您可以使用

>> data{1}

ans =

       2
       4
       8
      16
      32
      64
     128
     256
     512
    1024
    2048
    4096
    8192
TEXTREAD比TEXTSCAN更容易使用,但根据文档,它现在已经过时了