Matlat函数将单元格数组转换为特定格式的文本文件

时间:2014-10-14 18:13:54

标签: 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的
1 2 3 4 5
11 21 31 41 51 61 71 81

怎么样,我可以这样做吗?是否有预定义的函数来实现此目标或者我是否需要编写自定义函数。有人可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

简单地做

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