数据文件没有显示实际输出
Data files did not show the actual output
我有两个.dat 文件。它们是 world.dat
和 sensor_data.dat
。我在 D: 驱动器中有一个名为 tutorial
的文件夹名称。在本教程文件中,有两个文件夹 data
和 code
。现在在数据文件夹中,有我之前提到的两个文件 world.dat
和 sensor_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
...
fread
从 binary 文件中读取数据,而您正在使用 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 代替。
我有两个.dat 文件。它们是 world.dat
和 sensor_data.dat
。我在 D: 驱动器中有一个名为 tutorial
的文件夹名称。在本教程文件中,有两个文件夹 data
和 code
。现在在数据文件夹中,有我之前提到的两个文件 world.dat
和 sensor_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
...
fread
从 binary 文件中读取数据,而您正在使用 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 代替。