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

标签 algorithm matlab syntax octave data-files

我有两个 .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
' ' 的 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/

相关文章:

python - 在python中制作两对的有效方法

algorithm - 在 C# 中为 0-1 背包编写模拟退火算法

matlab - 一组给定元素的唯一(有限长度)组合 - 在 Matlab 中的实现

vim - 如何获得语法检查以在/使用 vim 工作?

algorithm - 作为 N 函数的最坏情况运行时间的增长顺序

algorithm - 我必须找到包含数字 k 或可被 k 整除的第 n 个数字。 (2 <= k <= 9)

python - Python数据导入错误

matlab - 编译后运行matlab代码出错

java - "blocks[i][j].isColorBox() ? pieceColor : backgroundColor"的长版本是什么?

c - 学习 C 并遇到错误(我认为主要是语法,但我正在学习!)