如何在Matlab中读取文件?

6
我有一个txt文件,文件内容是一行行的数字,每一行都有5个浮点数,每个数字间用逗号隔开。 例如:
1.1, 12, 1.42562, 3.5, 2.2
2.1, 3.3, 3, 3.333, 6.75
我该怎样将文件内容读入matlab中的矩阵? 目前我的代码如下:
fid = fopen('file.txt');
comma  = char(',');
A = fscanf(fid, ['%f', comma]);
fclose(fid);

问题在于它只给了我第一行,当我试图写A的内容时,我得到了这个:1.0e+004 * 一些数字。
有人能帮帮我吗?我猜对于文件,我需要在循环中读取它,但是我不知道怎么做。
编辑:还有一个问题:当我输出到A时,我得到了这个:
A =

1.0e+004 *
4.8631         0         0         0    0.0001
4.8638   -0.0000   -0.0000    0.0004    0.0114
4.8647   -0.0000   -0.0000    0.0008    0.0109

我希望矩阵中的数字能够与文件中的数字相同,我应该如何使这些数字成为规范的浮点数而非像现在这样被格式化了?或者说这些数字其实本来就是浮点数,只是输出时被显示成这个样子了吗?


你只对数字数据感兴趣吗? - fpe
是的,只返回数字。 - shlomi
@shlomi,您在后续处理中说得非常正确。这正是MATLAB显示数据的方式。如果您查看工作区,就可以确定数据实际上的格式。或者,您可以在命令提示符中键入“whos”,它将列出所有变量、它们的大小和类型。 - Doresoom
3个回答

10

MATLAB内置的dlmread函数是您想要实现的目标的更简单的解决方案。

A = dlmread('filename.txt',',') % call dlmread and specify a comma as the delimiter

6

可以尝试使用importdata函数。

A = importdata(`filename.txt`);

它将解决您的问题。 编辑 备选方案1)
A = dlmread('test_so.txt',',');

0

答案出奇地简单:

fid = fopen('depthMap.txt');
A = fscanf(fid, '%f');
fclose(fid);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接