2012-05-12 3 views
0

Я ищу отдельные строки в текстовом файле с запятыми в Matlab, до сих пор я использовал «csvwrite» и «dlmwrite».Разделительные строки запятыми в Matlab

Они обычно принимают такую ​​форму:

myFile - input ('Please enter file's directory','s'); 
readMatrix - csvread(myFile); 
csvwrite('newdatafile.dat', readMatrix); 

Чтобы уточнить, что я пытаюсь сделать это:

Включите текстовый файл, который выглядит следующим образом:

0.3 
0.1 
0.5 
etc 

К Это:

0.3, 
0.1, 
0.5, 
etc, 
+0

+1 для размещения ввода и вывода образца. Но что более важно, вы должны включить немного о том, что именно это не работает. Также в этом случае вы можете дать более подробную информацию о том, как вы вводите файл и сохраняете его. – Ansari

+0

Какой формат читаетMatrix после чтения исходного файла? Является ли это матрицей (и если да, какой размер?) Или массив ячеек? – tmpearce

ответ

0

Зачем вам нужны запятые в конце строки? csvread работает также с файлом из которых строки содержат запятую номера, а именно:

file1.dat: 
02, 04, 06, 08, 10, 12 
03, 06, 09, 12, 15, 18 
05, 10, 15, 20, 25, 30 
07, 14, 21, 28, 35, 42 
11, 22, 33, 44, 55, 66 


--and then in matlab: 
readMatrix = csvread('file1.dat') 

прочтет этот файл и привести к size(readMatrix) = [5 6] (несмотря на недостающую запятую в конце каждой строки) относится То же самое если файл содержит только один столбец чисел (и, следовательно, никаких запятых).

Однако, если вы действительно хотите, запятые, вы можете прочитать данные и распечатать его в файл самостоятельно с fprintf:

readMatrix = csvread('file1.dat'); 
fid=fopen('file1withcommas.dat','w'); 
for ii=1:size(readMatrix,1) 
    fprintf(fid,'%g,\n',readMatrix(ii,:)); 
end 
fclose(fid) 
+0

Да! Альтернативный метод работал, спасибо! –

0

Функция csvwrite MATLAB записывает данные матрицы в файл, разделенный запятыми. Строки, к сожалению, в MATLAB не имеют своего отдельного типа данных и также представлены в виде матриц, поэтому, когда вы запускаете csvwrite, они обрабатывают каждую букву как элемент и помещают запятую между каждой буквой.

У вас есть два варианта: либо сохранить ваш ввод как удвоение, либо запустить csvwrite, либо использовать более примитивные функции для вывода их в файл (sprintf, за которым следует fprintf, в дескриптор файла).

 Смежные вопросы

  • Нет связанных вопросов^_^