【问题标题】:How to use MATLAB fread to read a txt file?如何使用 MATLAB fread 读取 txt 文件?
【发布时间】:2012-01-12 20:01:25
【问题描述】:

我尝试使用 fread 读取文本文件

我的代码只有两行

fid = fopen('1.txt', 'r');
c = fread(fid,'double', skipvalue); 

我测试了不同的格式,如 double、float32、float64 和从 0 到 8 的不同 skipvalue,但没有一种组合工作。

数据由c程序代码记录 fprintf(file,"%f \n",sample[i]);

样本数据(每一行只有一个数据)

-0.992224 
0.932078 
-0.474954 
-0.659479 
-0.994677 
-0.380766 
-0.643983 
0.425023 

【问题讨论】:

    标签: c matlab file-io


    【解决方案1】:

    试试textscan 函数或fscanf

    fread 对应于fwrite,而不是fprintf

    fscanf 对应于fprintf

    如果您绝对必须使用fread,您将读取一个字符串(字符数组),然后使用sscanf 从中提取数值数据。

    【讨论】:

    • @Ben -> 有没有办法控制你读取的行数,同时将它作为字符串读取?您的建议很棒,但由于我的 .txt 文件很大,我想一次读取“N”行(不想使用 textscan!)。谢谢...
    • @Maddy:这个问题是关于读取数字数据的,为什么突然关心字符串?你可以告诉fscanf要读取多少行,MatLab会记住你在文件中的位置(只要你不关闭它),你可以稍后使用fscanf和相同的文件句柄继续读取哪里你离开了。
    • @Ben --> 我正在使用您的建议来读取,例如使用 *char 读取 500 万行 X 7 列的数据,然后使用 sscanf 将它们转换回双精度。但是,如果我的文本文件有 2000 万行,我将不得不使用 SomeRowCount 读取它。我试过 fscanf ,在我的情况下它实际上比 textscan 慢! (stackoverflow.com/questions/9543281/…) 你的建议是迄今为止最好的。如果我能以某种方式控制 NumbrOfRows,因为使用 *char 将每个字符都视为行号。有什么建议么?非常感谢!
    • @Maddy:您已经获得了指向this question 的链接,这是我所知道的解决您的问题的最佳解释。
    猜你喜欢
    • 1970-01-01
    • 2020-06-09
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 2017-05-11
    • 1970-01-01
    • 1970-01-01
    • 2012-08-06
    相关资源
    最近更新 更多