2013-04-23 3 views
4

У меня есть txt-файл, а содержимое файла - это строки чисел, Каждая строка содержит 5 чисел с плавающей запятой, с каждой запятой разделяя запятую. пример:Как читать файл в Matlab?

1,1, 12, 1,42562, 3,5, 2,2

2,1, 3,3, 3, 3,333, 6,75

Как я могу прочитать содержимое файла в матрицу в MATLAB? До сих пор у меня есть это:

fid = fopen('file.txt'); 
comma = char(','); 
A = fscanf(fid, ['%f', comma]); 
fclose(fid); 

Проблема заключается в том, что это только дает мне первую строчку и когда я попытаться написать содержание AI получить это: 1.0E + 004 * некоторое количество

Может кто-то мне помочь, пожалуйста? Я предполагаю, что для файла мне нужно прочитать его в цикле, но я не знаю, как это сделать.

Edit: Еще один вопрос: Когда я делаю вывод AI получает это:

A = 

1.0e+004 * 
4.8631   0   0   0 0.0001 
4.8638 -0.0000 -0.0000 0.0004 0.0114 
4.8647 -0.0000 -0.0000 0.0008 0.0109 

Я хочу, чтобы один и то же значение, что в файл, чтобы быть в матрице, как я могу сделать цифры, чтобы быть регулярными float и не отформатирован так? Или числа в матрице фактически плавают, но вывод отображается только так?

+0

ты заинтересован только в числовых данных? – fpe

+0

да, только цифры. – shlomi

+0

@shlomi, вы ударяете ноготь по голове своим последующим наблюдением. Именно так MATLAB отображает данные. Если вы посмотрите в рабочей области, вы можете указать, в каком формате находятся ваши данные. Альтернативно, вы можете ввести 'whos' в командную строку, и в нем будут перечислены все ваши переменные, их размеры и их типы. – Doresoom

ответ

8

MATLAB встроенный в dlmread функции будет гораздо проще решение, для чего вы хотите достичь.

A = dlmread('filename.txt',',') % call dlmread and specify a comma as the delimiter 
6

попробовать с помощью importdata функции

A = importdata(`filename.txt`); 

Это будет решить вопрос.

EDIT

Альтернатива 1)

A = dlmread('test_so.txt',','); 
0

Ответ удивительно прост:

fid = fopen('depthMap.txt'); 
A = fscanf(fid, '%f'); 
fclose(fid); 
Смежные вопросы