Как сохранить строковую матрицу и записать в файл? - PullRequest
2 голосов
/ 04 июня 2010

Я не знаю, может ли Matlab сделать это, но я хочу сохранить несколько строк в матрице 4 × 3, каждый элемент в матрице является строкой.

test_string_01  test_string_02  test_string_03
test_string_04  test_string_05  test_string_06
test_string_07  test_string_08  test_string_09
test_string_10  test_string_11  test_string_12

Тогда я хочучтобы записать эту матрицу в простой текстовый файл, разделенный запятыми или пробелами.

test_string_01,test_string_02,test_string_03
test_string_04,test_string_05,test_string_06
test_string_07,test_string_08,test_string_09
test_string_10,test_string_11,test_string_12

Похоже, matrix тип данных не способен хранить строки.Я посмотрел на cell.Я пытался использовать dlmwrite() или csvwrite(), но оба они принимают только матрицы.Я также сначала попробовал cell2mat(), но таким образом все буквы в строках разделяются запятой, как

t,e,s,t,_,s,t,r,i,n,g,_,0,1,t,e,s,t,_,s,t,r,i,n,g,_,0,2,t,e,s,t,_,s,t,r,i,n,g,_,0,3

Так есть ли способ добиться этого?

Ответы [ 3 ]

8 голосов
/ 04 июня 2010

Можно немного сократить решение юк .

strings = {
'test_string_01','test_string_02','test_string_03'
'test_string_04','test_string_05','test_string_06'
'test_string_07','test_string_08','test_string_09'
'test_string_10','test_string_11','test_string_12'};

fid = fopen('output.txt','w');
fmtString = [repmat('%s\t',1,size(strings,2)-1),'%s\n'];
fprintf(fid,fmtString,strings{:});
fclose(fid);
4 голосов
/ 04 июня 2010

Массив ячеек - это способ хранения строк.

Я согласен, что сохранять строки в текстовом файле - боль, но вы можете сделать это с помощью этого кода:

strings = {
'test_string_01','test_string_02','test_string_03'
'test_string_04','test_string_05','test_string_06'
'test_string_07','test_string_08','test_string_09'
'test_string_10','test_string_11','test_string_12'};

fid = fopen('output.txt','w');
for row = 1:size(strings,1)
    fprintf(fid, repmat('%s\t',1,size(strings,2)-1), strings{row,1:end-1});
    fprintf(fid, '%s\n', strings{row,end});
end
fclose(fid);

Замените \t на ,, чтобы получить CSV-файл.

Вы также можете сохранить массив ячеек строк в файл Excel с помощью XLSWRITE (требуется интерфейс COM, поэтому только для Windows):

xlswrite('output.xls',strings)
1 голос
/ 28 февраля 2012

В большинстве случаев вы можете использовать разделитель '' и получить Matlab для сохранения строки в файл с помощью dlmwrite.

Например,

output=('my_first_String'); dlmwrite('myfile.txt',output,'delimiter','')

сохранит файл с именем myfile.txt, содержащий my_first_String.

...