2010-06-04 37 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文件。

相关问题