我不知道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 :(得分: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。