2010-06-04 81 views
2

我不知道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 

那麼,有沒有辦法做到這一點?

+0

在Matlab中使用文本是一種痛苦。這可能需要5行Python。你爲什麼需要這樣做? – 2010-06-04 01:58:36

+0

@Hamish Grubijan因爲我有來自輸出矩陣的其他人的現有代碼。我想用實際名稱替換第一列。 – zihaoyu 2010-06-04 03:43:56

+3

@Hamish Grubijan:幸運的是,Matlab中只需要5行。 – Jonas 2010-06-04 03:48:23

回答

4

單元格數組是存儲字符串的方式。

我同意這是一個痛苦的字符串保存到一個文本文件,但你可以用這個代碼做到這一點:

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) 
+0

我的解決方案太長,無法發表評論。如果您更新解決方案,我會刪除我的答案。 – Jonas 2010-06-04 03:51:04

+0

@Jonas,感謝更好的代碼。它當然是一個單獨的答案。 (至於我,我會接受你的。)對我來說太糟糕了,昨天晚了。 – yuk 2010-06-04 16:16:47

8

它可以縮短yuk的解決方案了一下。

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); 
1

在大多數情況下,您可以使用分隔符''並讓Matlab將字符串保存到帶有dlmwrite的文件中。

例如,

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

將保存的文件名爲myfile.txt的含my_first_String文件。

相關問題