如何存储字符串矩阵并写入文件?

时间:2010-06-04 01:49:34

标签: string matlab matrix cell

我不知道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 个答案:

答案 0 :(得分: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 :(得分:4)

Cell数组是存储字符串的方法。

我同意将字符串保存到文本文件中很痛苦,但您可以使用此代码执行此操作:

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文件。

您还可以使用XLSWRITE将字符串的单元格数组存储到Excel文件中(需要COM接口,因此它仅在Windows上):

xlswrite('output.xls',strings)

答案 2 :(得分:1)

在大多数情况下,您可以使用分隔符''并使用Matlab将字符串保存到dlmwrite文件中。

例如,

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

将保存一个名为myfile.txt的文件,其中包含my_first_String。