Matlab Matlat函数,用于将单元格数组转换为特定格式的文本文件
运行一个算法后,我得到了单元格数组X中的输出Matlab Matlat函数,用于将单元格数组转换为特定格式的文本文件,matlab,function,Matlab,Function,运行一个算法后,我得到了单元格数组X中的输出 >> X X = [5x1 double] [5x1 double] >> celldisp(X); X{1} = 1 2 3 4 5 X{2} = 11 21 31 41 51 61 71 81 请注意,输出的维度是不同的。X{1}的长度为5,而X{2}的长度为8。 现在,我想将celldisp(X)的输出以以下格式写入一个txt文件: output.txt 12345 1121311
>> X
X =
[5x1 double]
[5x1 double]
>> celldisp(X);
X{1} =
1
2
3
4
5
X{2} =
11
21
31
41
51
61
71
81
请注意,输出的维度是不同的。X{1}的长度为5,而X{2}的长度为8。现在,我想将
celldisp(X)
的输出以以下格式写入一个txt文件:output.txt
12345
112131141617181 我该怎么做?是否有预定义的函数来实现此目标,或者是否需要编写自定义的函数。有人能帮我解决这个问题吗?就这么办
dlmwrite('output.txt',horzcat(X{:})','delimiter',' ');
对于更新后的问题,如果单元格元素中的数组长度不相同,我建议您使用循环:
fid = fopen('output.txt', 'w');
for idx = 1:numel(X)
fprintf(fid,[repmat('%d ', 1, numel(X{idx})) '\n'], X{idx});
end
fclose(fid);
又一次编辑,这次是为了让它成为一个函数
function printCellArray(filename, cellarray)
fid = fopen(filename, 'w');
for idx = 1:numel(cellarray)
fprintf(fid,[repmat('%d ', 1, numel(cellarray{idx})) '\n'], cellarray{idx});
end
fclose(fid);
end
如果输出的维度不一致怎么办。我的意思是X{1}=12345x{2}=112131415161。如何处理?原因是,我得到了以下错误“使用horzcat连接矩阵的维数不一致的错误”。由于输出的维数不同,我想我需要为此编写一个用户定义的函数。你知道怎么做吗?我想这满足了你的需要。输出是我想要的,但是输出文件中每行末尾都有一些乱码,我试着在没有第5行提到的“\b”的情况下运行函数,但输出文件中每行末尾的乱码内容仍然存在……我认为这是由文本文件编辑器造成的。你在用什么?在Matlab中,它在这里看起来很好,您可以通过键入
edit output.txt
进行检查。