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

String 如何存储字符串矩阵并写入文件?,string,matlab,matrix,cell,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 然后,我想把这个矩阵

我不知道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
似乎
矩阵
数据类型无法存储字符串。我看了看
单元格
。我尝试使用
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

那么有什么方法可以做到这一点呢?

单元格数组是存储字符串的方法

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

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上):

有可能将的解决方案缩短一点

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

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

比如说,

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


将保存一个名为myfile.txt的文件,其中包含我的第一个字符串

在Matlab中处理文本是一件痛苦的事情。这可能需要Python中的5行代码。你为什么要这样做?@Hamish Grubijan因为我有其他人提供的输出矩阵的现有代码。“我想用实际名称替换第一列。@哈米什·格鲁比扬:幸运的是,它在Matlab中也只需要5行。我的解决方案太长,无法放入注释中。”。如果您更新您的解决方案,我将删除我的答案。@Jonas,谢谢您提供更好的代码。这绝对应该是一个单独的答案。(至于我,我会接受你的。)对我来说太糟糕了,昨天太晚了。
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);