Файлы данных не показывают фактический вывод - PullRequest
1 голос
/ 30 сентября 2019

У меня есть два файла .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.

Требуется помощь для решения проблемы.

1 Ответ

2 голосов
/ 30 сентября 2019

Вы получаете ASCII значения символов в файле.

ASCII-значение 1 равно 49.
ASCII-значение ' ' (пробел) равно 32.
ASCII-значение 2 равно 50 ...

fread считывает данные из двоичного файла , и вы используете 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 .

...