我有两个 .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
。
' '
的 ASCII 值(空格)等于 32
。
2
的 ASCII 值等于 50
...
fread
从二进制 文件读取数据,而您正在使用fread
读取文本 文件。文本字符的二进制值是 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反而。
关于algorithm - 数据文件没有显示实际输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58173622/