数据文件没有显示实际输出

Data files did not show the actual output

我有两个.dat 文件。它们是 world.datsensor_data.dat。我在 D: 驱动器中有一个名为 tutorial 的文件夹名称。在本教程文件中,有两个文件夹 datacode。现在在数据文件夹中,有我之前提到的两个文件 world.datsensor_data.dat。在代码文件夹中,有一个文件名 main.m 因为它是一个 Matlab 文件。

写入此文件(main.m)的代码是

clc;
clear;
close all;

% Read *.dat files containing landmark data
landmarks = fopen('../data/world.dat');
landmarks_data = fread(landmarks);

% Read *.dat files containing odometry and range-bearing sensor data
data = fopen('../data/sensor_data.dat');
data_data = fread(data);

但是当我打印 landmarks_data 和 data_data 时,他们打印的不是写在这两个文件上的东西(world.dat,sensor_data.dat)

world.dat 文件包含:

1 2 1
2 0 4
3 2 7
4 9 2
5 10 5
6 9 8
7 5 5
8 5 3
9 5 9

我的输出:

>> landmarks_data
landmarks_data =
49
32
50
32
49
10
50
32
48
32
52
10
51
32
50
32
55
10
52
32
57
32
50
10
53
32
49
48
32
53
10
54
32
57
32
56
10
55
32
53
32
53
10
56
32
53
32
51
10
57
32
53
32

我不知道他们从哪里得到这些数据? data_data 变量也发生了同样的事情。

需要帮助解决问题。

您正在获取文件中字符的 ASCII 值。

1 的 ASCII 值等于 49
' ' (space) 的 ASCII 值等于 32.
2 的 ASCII 值等于 50...

freadbinary 文件中读取数据,而您正在使用 fread 读取 text 文件.文本字符的二进制值是 ASCII 码(也可以是 UNICODE 值)。

如果你想以文本形式读取数据,并保持矩阵结构,你可以使用readmatrix函数:

landmarks = readmatrix('../data/world.dat');

结果:

landmarks =

     1     2     1
     2     0     4
     3     2     7
     4     9     2
     5    10     5
     6     9     8
     7     5     5
     8     5     3
     9     5     9

备注:如果您的 MATLAB 版本在 R2019a 之前,您可以使用 dlmread 代替。